1

ここで問題が発生しました。

ファイル内の文字を書き込んで一致させてから、いくつかのコマンドを実行したいのですが、これは間違っています..! これらのコマンドを試すことができます..

c:>\echo 1 >file.txt
c:>\set /p var=<file.txt
c:>\if %var% EQU "1" (echo 21 ) ELSE (echo 10)

値が得10られます。変数をファイルに書き込む別の方法を試します。

c:>\set /p=1 <nul>file.txt
c:>\set /p var=<file.txt
c:>\if %var% EQU "1" (echo 21 ) ELSE (echo 10)

file.txtおよびでデータを表示する場合var:

c:>\type file.txt
1
c:>\echo %var%
1
c:>\if %var% EQU "1" (echo 21 ) ELSE (echo 10)
10

助けてくれてありがとう。

4

3 に答える 3

1

ステファンが提案したように、あなたは に反響1*space*していfile.txtます。次のように、リダイレクトを行の先頭に配置してみてください。

>file.txt echo 1

次のように、echo コマンドを括弧で囲むこともできます。

(echo 1)>file.txt

>file.txt echo 1よりも読みやすいと思います(echo 1)>file.txtが、マイレージは異なる場合があります。

残念ながら、 の後のスペースを単に削除するだけでは問題を解決できません1。cmd はそれを として解釈しecho stdout>file.txtfile.txt内容がECHO is on.

于 2013-03-27T16:41:52.690 に答える
1

コマンドを使用すると、set /a数値変数から不要な非表示スペースを削除できます。これを試して:

C:\>echo 1 >file.txt

C:\>set /p var=<file.txt

C:\>set /a var=%var%
1
C:\>if "%var%" EQU "1" (echo 21 ) ELSE (echo 10)
21
于 2013-03-27T18:35:05.600 に答える
0

行の末尾のスペースに注意してください。ただし、リダイレクタの直前に数字があるため、STDOUT の出力がファイルに送信されます ECHO 1>file.txt

ECHO 1 >file.txt
FOR /f "delims=" %%i IN (file.txt) DO ECHO +%%i+
(ECHO 2) >file.txt
FOR /f "delims=" %%i IN (file.txt) DO ECHO +%%i+
>file.txt ECHO 3
FOR /f "delims=" %%i IN (file.txt) DO ECHO +%%i+
>file.txt (ECHO 4)
FOR /f "delims=" %%i IN (file.txt) DO ECHO +%%i+

次のポイントは、それ1はの内容でvarあり、これは等しくないということです"1"

環境変数は常に文字列です。

これを修正if "%var%" equ "1" (echo 21 ) ELSE (echo 10)

于 2013-03-27T16:59:55.227 に答える