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 exists 语句。除了糟糕的格式之外,任何人都可以看到任何明显的错误:)。

4

1 回答 1

1

您在一个块中设置一个变量并在同一个块中使用它的值。这不能与正常的变量扩展一起工作(这发生在一个命令(这包括一个完整的块)被解析,而不是在它运行时)。要解决此问题,您需要使用延迟扩展,因此将以下内容放在批处理文件的开头:

setlocal enabledelayedexpansion

然后使用!Build!而不是%Build%. 有关help set更多详细信息和解释,请参阅(我已经写了几十次了;))。

于 2013-02-14T17:26:00.357 回答