バッチを使用してテキストファイルに単一のスペースバーを追加する必要があります
ただし、次の機能はありません
ECHO >C:\txt.txt
これにより、代わりにテキスト Echo is (off) が生成されます???
Windowsバッチを使用しています
バッチを使用してテキストファイルに単一のスペースバーを追加する必要があります
ただし、次の機能はありません
ECHO >C:\txt.txt
これにより、代わりにテキスト Echo is (off) が生成されます???
Windowsバッチを使用しています
echo
パラメータを指定していないため、「ECHO if off」というテキストを出力しています。使用方法を入力echo /?
すると、この動作が定義されていることがわかります。「現在のエコー設定を表示するには、パラメーターなしで ECHO を入力してください」。したがって、あなたの場合、エコーはオフに設定されています。
改行と改行なしでスペース文字を使用したい場合は、おそらくset
. Windows XP を使用している場合、これは簡単なはずです。
>txt.txt ( <nul set /p "= " )
Vista 以降を実行している場合は、Windows が set コマンドの先頭のスペースを削除するため、少し注意が必要です。
バックスペース文字を作成してから、それを出力する必要があります。
:: 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 などの他のスクリプト言語を使用した方がよいでしょう。
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
上記の手法は、いくつかの例外を除いて、改行のないほぼすべての文字列の出力をサポートするように拡張できます。
文字列に改行を含めることはできません
XP FINDSTR は、ほとんどの制御文字と多くの拡張 ASCII 文字をドットとして表示します。Windows FINDSTR コマンドの文書化されていない機能と制限事項は何ですか? を参照してください。詳細については。
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
の直前に文字が追加されます。ECHO
CR LF
そして、copy inputfile /a outputfile /b
すべての文字が最初のSUB
文字までコピーされます。
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"