11

BATスクリプトを作成しようとしていますが、次のものがあります。

@echo off
REM Comments here
SETLOCAL ENABLEDELAYEDEXPANSION
set PROG_ROOT=C:\Prog
set ONE=1

echo 1>> %PROG_ROOT\test.txt
echo %ONE%>> %PROG_ROOT\test.txt

for /f "tokens=*" %%f in (folders.txt) do (
    echo %%f>> %PROG_ROOT\test.txt
)

ENDLOCAL

私のfolders.txtには数字「5」が含まれています。

私のtest.txt出力は

ECHO is off
ECHO is off
5

出力の最初の 2 行に「ECHO is off」が表示されているのに、3 行目は正しく出力されている理由がわかりません。正しい出力を印刷するにはどうすればよいですか?

ETA: やってみた

echo 1>> %PROG_ROOT\test.txt
echo %ONE% >> %PROG_ROOT\test.txt

そして印刷できました

ECHO is off
1

ただし、数字の後の末尾のスペースを印刷する必要はありません。

4

2 に答える 2

7

1>(より一般的n>には任意の数字に対してn)はリダイレクトとして解釈されるため、引数のないようecho 1>>に見えます。引数を指定しないと、現在の状態が出力されます(ここでは、)。cmdechoechoechoECHO is off

修正するには、整数を^文字でエスケープします。

echo ^1>> %PROG_ROOT\test.txt
于 2012-09-20T03:54:10.537 に答える