5

バッチを使用してテキストファイルに単一のスペースバーを追加する必要があります

ただし、次の機能はありません

ECHO  >C:\txt.txt

これにより、代わりにテキスト Echo is (off) が生成されます???

Windowsバッチを使用しています

4

7 に答える 7

6

echoパラメータを指定していないため、「ECHO if off」というテキストを出力しています。使用方法を入力echo /?すると、この動作が定義されていることがわかります。「現在のエコー設定を表示するには、パラメーターなしで ECHO を入力してください」。したがって、あなたの場合、エコーはオフに設定されています。

改行と改行なしでスペース文字を使用したい場合は、おそらくset. Windows XP を使用している場合、これは簡単なはずです。

WindowsXP

>txt.txt ( <nul set /p "= " ) 

Vista 以降を実行している場合は、Windows が set コマンドの先頭のスペースを削除するため、少し注意が必要です。

Windows Vista 以降

バックスペース文字を作成してから、それを出力する必要があります。

:: Create a backspace character
for /f %%A in ('"prompt $H &echo on &for %%B in (1) do rem"') do set BS=%%A

<nul set /p=%BS% > txt.txt

これは実際にはスペースを出力するのではなく、代わりにバックスペース文字を出力することに注意してください。これでうまくいくかどうかはわかりませんが、これ以上簡単な方法は思いつきませんでした。それ以外の場合は、python や powershell などの他のスクリプト言語を使用した方がよいでしょう。

于 2012-12-20T15:04:38.577 に答える
2

SET /P は、Vista 以降では先頭の空白を出力しないだけでなく、先頭の も出力できません=

以下は、XP 以降のすべての最新バージョンの Windows で動作するコードです。

@echo off
setlocal enableDelayedExpansion
for /f %%A in ('copy /Z "%~dpf0" nul') do set EOL=%%A^


:: The above two empty lines are critical - DO NOT REMOVE
<nul set /p "=x!EOL! " >temp.tmp
findstr /v $ temp.tmp >file.txt
del temp.tmp

上記の手法は、いくつかの例外を除いて、改行のないほぼすべての文字列の出力をサポートするように拡張できます。

于 2013-10-18T04:06:08.897 に答える
2

Win Vista以降で単一のスペースを作成するには、コマンドを使用できなくなりましたSET/P(dbenhamが述べたように)。

copyただし、コマンドを使用できます

@echo off
setlocal EnableDelayedExpansion
call :createSub
call :echoWithoutLinefeed "=hello"
call :echoWithoutLinefeed " world"
exit /b

:echoWithoutLinefeed
> txt.tmp (echo(%~1!sub!)
copy txt.tmp /a txt2.tmp /b > nul
type txt2.tmp
del txt.tmp txt2.tmp
exit /b

:createSub
copy nul sub.tmp /a > nul
for /F %%a in (sub.tmp) DO (
   set "sub=%%a"
)
del sub.tmp
exit /b

最初にテキストはシンプルに出力されますがECHO、最後にappendsSUBの直前に文字が追加されます。ECHOCR LF

そして、copy inputfile /a outputfile /bすべての文字が最初のSUB文字までコピーされます。

于 2013-10-18T06:36:43.360 に答える
1

32 ビット Windows 用の 2 つの方法を次に示します。

このメソッドは、16 進数 20 (スペース) で直接ファイルを作成します。

@echo off
(for %%v in (E100''20 Nfile.tmp RCX 01 W Q) do @echo %%v)|debug >nul
ren file.tmp "file with a single space.txt"

これにより、file.tmp ファイルから末尾の 2 文字が削除されます

@echo off
set f=file.tmp
echo. >%f%
(for %%v in (E100''83''E9''02 L103 P N%f% W103 Q) do echo %%v)|debug %f% >nul
ren %f% "file with a single space.txt"
于 2013-10-18T06:55:04.220 に答える