Batch file 正确设置批处理if语句
我在批处理脚本中写入了一个计时器,这样我就可以比较文件的实时执行和内部运行时间,如下所示:Batch file 正确设置批处理if语句,batch-file,timer,batch-processing,Batch File,Timer,Batch Processing,我在批处理脚本中写入了一个计时器,这样我就可以比较文件的实时执行和内部运行时间,如下所示: @echo off setlocal enabledelayedexpansion cls for /f "delims=_" %%J in ('forfiles /p "%%F" /m *.ext /c "cmd /c echo @path"') DO ( set start=!time! echo Start Time: !start! start "PROGRAM" /D
@echo off
setlocal enabledelayedexpansion
cls
for /f "delims=_" %%J in ('forfiles /p "%%F" /m *.ext /c "cmd /c echo @path"') DO (
set start=!time!
echo Start Time: !start!
start "PROGRAM" /D "C:Program Files\Path\to\PROGRAM"
set end=!time!
echo End Time: !end!
for /F "tokens=1-4 delims=:.," %%a in ("!start!") do (
set /a "start=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
)
for /F "tokens=1-4 delims=:.," %%a in ("!end!") do (
set /a "end=(((%%a*60)+1%%b %% 100)*60+1%%c %% 100)*100+1%%d %% 100"
)
set /A elapsed=end-start
if !elapsed! lss 0 set /a elapsed + 8640000
echo Elapsed Time: !elapsed!
倒数第二行如果有
语句来解决脚本在午夜后运行的问题,那么它似乎不起作用,我仍然会得到负时间。有人能在这里发现错误吗
此外,我还想创建另一层错误报告,这样即使前面提到的代码行功能完美,我也想添加另一层错误报告,如果可以的话!已过去!=如果为负,则为null。可能需要注意的是,我仍然是批处理新手,并且在学习过程中学习了所有这些知识。阅读set/a
或此。因此,您的线路可能如下所示:
if !elapsed! lss 0 set /a "elapsed+=8640000"
或(给出相同的结果)
我在您的
集合/a expressed+8640000
中看不到任何赋值运算符。因此,尽管计算了appead+8640000
表达式,但结果没有赋值…好的,+=
为appead变量赋值了一个额外的8640000?如果我在下面添加这一行:if!逝去!lss 0设置/a“appeased=“
”,在添加8640000之后,如果appeased变量为负数,是否会进行检查,然后将其设置为null?我希望这条线永远不会真正开始。只是一些错误控制set/a“appeased=“
引发缺少的操作数
错误%errorlevel%”==“1073750989”
保持%appeased%
变量不变如果!错误等级!NEQ 0
()。设置“经过时间=null”
分配字符串null
。命令行解释器中没有空值。再次说明:存储在环境变量中的所有数据都是stringsOne问题-您的setlocal enableDelayedExpansion
行拼写错误(额外的d
)已修复,只是在此处拼写错误,而不是在我的脚本中。
if !elapsed! lss 0 set /a "elapsed = elapsed + 8640000"