0
我有一個bat腳本,我試圖捕獲其中每個功能的處理時間。我還有兩個蝙蝠腳本捕捉開始時間和結束時間,但是當我嘗試將這些變量傳回主腳本時,它不起作用。請指教如何將變量從一個批次傳遞到另一個
TRIGGER.bat
if exist "inProcess.lok". (
exit
) else (
if EXIST "some.ZIP". (
call startTime.bat
set /a startDel=%1
::some Process
call endTime.bat
set /a endDel=%2
set /a timeDel= (%endDel% - %startDel%)
set /a timeDels= %timeDel%/100
set timeDel=%timeDels%.%timeDel:~-2%
echo %timeDel%
echo %timeDel%
echo %timeDel%
pause
))
startTime.BAT
set starttime=%TIME%
set startcsec=%STARTTIME:~9,2%
set startsecs=%STARTTIME:~6,2%
set startmins=%STARTTIME:~3,2%
set starthour=%STARTTIME:~0,2%
set /a starttime=(%starthour%*60*60*100)+(%startmins%*60*100)+(%startsecs%*100)+(%startcsec%)
:trigger.bat %starttime%
endTime.Bat
set endtime=%time%
set endcsec=%endTIME:~9,2%
set endsecs=%endTIME:~6,2%
set endmins=%endTIME:~3,2%
set endhour=%endTIME:~0,2%
if %endhour% LSS %starthour% set /a endhour+=24
set /a endtime=(%endhour%*60*60*100)+(%endmins%*60*100)+(%endsecs%*100)+(%endcsec%)
:trigger.bat %endtime%
批處理文件執行所有的同樣的過程。您可以在同一進程中使用前面批處理文件設置的變量。如果你通過命令行參數傳遞值,那麼它們沒有名字,而是一個數字。 – Joey
需要注意的是,我正在使用傳遞的變量作爲數字 set/a endDel =%2 set/a startDel =%1 但由於某些原因腳本不接受這些值。 – EddieT
您需要調用'delayedexpansion' [數百個關於它的SO-aricles - 使用搜索功能],以便顯示在括號內的一系列指令(又名「代碼塊」)內更改的任何變量的運行時值。你爲什麼不在'endtime.bat'中做計算和顯示,你可以在那裏提供參數來顯示結束的過程的名字? – Magoo