引言
很少寫Windows下的批處理命令腳本,既然遇到了它的用法,就先記下來吧,供自己和大家參考。沒啥技術含量,直接上代碼。
簡單直接的腳本
@echo off
set /a StartS=%time:~6,2%
set /a StartM=%time:~3,2%
set /a startH=%time:~0,2%
echo 開始時間:%time%
ping 192.168.1.1
set /a EndS=%time:~6,2%
set /a EndM=%time:~3,2%
set /a EndH=%time:~0,2%
echo 結束時間:%time%
set /a diffS_=%EndS%-%StartS%
set /a diffM_=%EndM%-%StartM%
set /a diffH_=%EndH%-%StartH%
set /a cost=%diffH_%*3600 + %diffM_%*60 + %diffs_%
echo 總共花費時間 : %cost% 秒
注: 以上腳本沒有進行前綴含有“0”的處理,對於某些特殊的時間,計算結果會出錯。
通過調用函數實現的腳本
@echo off
set logfile="ping.log"
set output="yes"
set cmd="ping 192.168.1.1 -n 10"
call :execute %cmd%
:execute
if "%~1" == "" (goto :eof)
echo =============================================================================== >>%logfile%
echo ===============================================================================
set /a StartX=1%time:~9,2%%%100
set /a StartS=1%time:~6,2%%%100
set /a StartM=1%time:~3,2%%%100
set /a startH=10%time:~0,2%%%100
echo #Start Time: %date% %time% >>%logfile%
echo #Start Time: %date% %time%
echo #Command: %~1 >>%logfile%
echo #Command: %~1
if %output% == "yes" (%~1 >>%logfile% 2>&1) else %~1
set /a EndX=1%time:~9,2%%%100
set /a EndS=1%time:~6,2%%%100
set /a EndM=1%time:~3,2%%%100
set /a EndH=10%time:~0,2%%%100
echo #Finish Time: %date% %time% >>%logfile%
echo #Finish Time: %date% %time%
set /a diffX_=10%EndX% %% 100-10%StartX% %% 100
set /a diffS_=10%EndS% %% 100-10%StartS% %% 100
set /a diffM_=10%EndM% %% 100-10%StartM% %% 100
set /a diffH_=10%EndH% %% 100-10%StartH% %% 100
if %diffH_% lss 0 (set /a diffH_=%diffH_%+24)
if %diffX_% lss 0 (
set /a diffX_=%diffX_%+100
set /a diffS_=%diffS_% - 1)
set /a cost=%diffH_%*3600 + %diffM_%*60 + %diffs_%
if %diffX_% lss 10 (
echo #Cost Time: %cost%.0%diffX_% seconds >>%logfile%
echo #Cost Time: %cost%.0%diffX_% seconds) else (
echo #Cost Time: %cost%.%diffX_% seconds >>%logfile%
echo #Cost Time: %cost%.%diffX_% seconds)
echo =============================================================================== >>%logfile%
echo ===============================================================================
goto :eof
該腳本將計算精確到毫秒,解決前綴包含0的問題,同時將計算的信息打印到屏幕和輸出到日誌文件中。通過設置 “output”變量,可以將調用的命令輸出也記錄到日誌文件中 。