0
if exist "C:\Windows\System32\updatevmcheck.txt" (
set /p Build=<C:\Windows\System32\updatevm.txt
if %Build% LSS 2  (
echo "Run Code Here"
) else (
exit
)
echo 2 > C:\Windows\System32\updatevmcheck.txt
exit
) 
ELSE (
echo 1 > C:\Windows\System32\updatevmcheck.txt
exit
)

上記は私が持っている現在のコードです。基本的に、ファイルの存在をチェックします。ファイルが存在する場合は、ファイルをチェックして、その中の数値が指定した数値よりも小さいかどうかを確認します。その場合、何らかのコードを実行し、ファイル内の番号を更新してから終了します。それ以外の場合は、番号を含むファイルを作成してから終了します。構文は正しく、個々の行を実行できると思いますが、バッチ ファイルを作成しても、if exist ステートメントを通過しているようには見えません。貧弱なフォーマット以外に、これで明らかに間違っていることを誰かが見ることができます:)。

4

1 に答える 1

1

ブロック内で変数を設定し、その値を同じブロック内で使用しています。これは、通常の変数展開では機能しません (これは、実行時ではなく、コマンド (これには完全なブロックを含む) が解析されるときに発生します)。これを解決するには、遅延展開を使用する必要があるため、バッチ ファイルの先頭に次の行を追加します。

setlocal enabledelayedexpansion

!Build!の代わりに使用し%Build%ます。詳細help setと説明については、を参照してください (これまでに数十回書きました ;))。

于 2013-02-14T17:26:00.357 に答える