我已将计时器写入批处理脚本,因此我可以将文件的实时执行与其内部运行时间进行比较,如下所示:
@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!
第二行到最后一行if
声明是为了解决脚本运行过午夜的问题,然而,它似乎没有工作,我仍然会得到负面的时间。谁能在这里发现错误?
此外,我想创建另一层错误报告,以便即使前面提到的代码行完美,我还想添加另一层,如果是会设置!过去了!如果否定则为null。可能很重要的是要注意我在批准和学习所有这些时仍然是新手。
答案 0 :(得分:2)
阅读set /a
command line reference或此great resource。因此,您的行可以如下:
if !elapsed! lss 0 set /a "elapsed+=8640000"
或(给出相同的结果)
if !elapsed! lss 0 set /a "elapsed = elapsed + 8640000"