等到命令完成批处理

时间:2012-07-19 18:59:56

标签: batch-file wait

In my batch script I have the following:

if somecondition (
   exit
) else ( 
    for /F "USEBACKQ tokens=4,6,8" %%a in (systeminfo ^| qgrep -e "System Up Time:") do set days=%%a&set hours=%%b&set minutes=%%c
    set /A timepassed=%days%*24*60+%hours%*60+%minutes%
   if "%timepassed%" leq 30 (
   echo %timepassed% 
   ) else (
   echo %time$  
   ) 
)

有什么方法可以确保在将变量timepass与值30进行比较之前设置它? 有时,如果运行这部分代码,则时间通过似乎被评估为“”而不是它应该是什么。

感谢您的时间

1 个答案:

答案 0 :(得分:3)

好吧,你在一个块中设置一个环境变量并在同一个块中读取它。这不起作用,因为cmd在语句解析时扩展环境变量,而不是在执行时(并且块是语句,因此块%timepassed%内部已被替换为在你进入街区之前它的价值。)

将变量扩展移动到语句的运行时添加

setlocal enabledelayedexpansion

在您的批处理开始时,使用!timepassed!代替%timepassed%。同样,对于在块中设置和使用的其他变量。