批处理脚本比较问题

时间:2013-02-14 17:21:12

标签: batch-file

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

1 个答案:

答案 0 :(得分:1)

您正在块中设置变量并在同一块中使用其值。这不适用于正常的变量扩展(当一个命令(包括一个完整的块)被解析时,而不是在它运行时)。要解决此问题,您需要使用延迟扩展,因此请在批处理文件的开头添加以下内容:

setlocal enabledelayedexpansion

然后使用!Build!代替%Build%。请参阅help set了解更多详情和解释(我现在已经写了几十次了)。)。