bat 時間 的運算與提取


比如在系統中date這個環境變量的值為
2011-07-23 星期六
年------%date:~0,4%      表示從左向右指針向右偏0位,然后從指針偏移到的位置開始提取4位字符,結果是2011
月------%date:~5,2%        表示指針從左向右偏移5位,然后從偏移處開始提取2位字符,結果是07
日------%date:~8,2%                         8                                  31
%date:~5% 表示指針從左向右偏移5位,然后提取所有的值 時間-----%date:~-5% 表示指針反方向偏移,從最右端開始,偏移5位,然后從指針處提取左邊的所有數值。 md F:\backup\%date:~0,4%%date:~5,2%%time:~0,2%%time:~3,2% 結果為:md F:\201107231855



echo.%date:~0%    日期date
echo.%time:~0%      時間time
echo. %date:~0,4%   年
echo.%date:~5,2%    月
echo.%date:~8,2%    日
echo.%time:~0,2%   小時
echo.%time:~3,2%    分
echo.%time:~6,2%    秒
echo.%time:~9,2%   里秒

pause

set /a 指定等號右邊的字符串為被評估的數字表達式。

就是表示計算



@echo off
set/a xz=123+456
echo %xz%
pause>nul

可以輸出123+456的結果

 

時間運算

@echo off 
:: 判斷一個腳本執行完畢所需要的時間 
:: 先取開始時間,然后在即將結束的時候取結束時間 
:: 兩個時間都分別提取小時、分和秒數 
:: 分別對小時數、分鍾數和秒數進行操作 
:: 還要對08和09這兩個數進行操作 
:: 注意:set /a num=的格式只能處理兩位數中是否高位為0,如果是多位數 
:: 要去高位的所有0的話,要用循環測試高位是否為0或者在高位添1然后 
:: 再減去1000之類的數字的方法 
:: code by JM 2006-9-510 CMD@XP 感謝pengfei測試 
set time_begin=%time:~0,-3% 
echo 腳本開始運行時間是 %time_begin% 
:: 小於10的小時數前有空格,要做去空格操作 
for /f "tokens=1,2,3 delims=:" %%i in ("%time_begin%") do ( 
set /a hour_b=%%i 
set /a munite_b=%%j 
set /a second_b=%%k 
) 
pause 
set time_end=%time:~0,-3% 
for /f "tokens=1,2,3 delims=:" %%i in ("%time_end%") do ( 
set /a hour_e=%%i 
set /a munite_e=%%j 
set /a second_e=%%k 
) 
call :time_lapse 
echo 腳本結束運行的時間是 %time_end% 
echo 共花費了 %hour_% 小時 %munite_% 分 %second_% 秒 
pause>nul 
goto :eof 
:time_lapse 
:: 一定要按照 秒=>分鍾=>小時 的順序操作 
if %second_e% lss %second_b% ( 
set /a munite_e=%munite_e%-1 
set /a second_e=%second_e%+60 
) 
set /a second_=%second_e%-%second_b% 
if %munite_e% lss %munite_b% ( 
set /a hour_e=%hour_e%-1 
set /a munite_e=%munite_e%+60 
) 
set /a munite_=%munite_e%-%munite_b% 
if %hour_e% lss %hour_b% ( 
set /a hour_e=%hour_e%+24 
) 
set /a hour_=%hour_e%-%hour_b% 
goto :eof 
另外一種方法(Code by Pengfei): 
@echo off 
::11:08:25.45 
:: 運行程序的時間統計 
set _time_start=%time% 
set /a hour_start=%_time_start:~0,2% 
set /a minute_start=1%_time_start:~3,2%-100 
set /a second_start=1%_time_start:~6,2%-100 
echo %time% 
echo %hour_start% 
echo %minute_start% 
echo %second_start% 
pause 
:: 結束程序的時間統計 
set _time_end=%time% 
set /a hour_end=%_time_end:~0,2% 
set /a minute_end=1%_time_end:~3,2%-100 
set /a second_end=1%_time_end:~6,2%-100 
echo %time% 
echo %hour_end% 
echo %minute_end% 
echo %second_end% 
pause 
:: 計算秒數 
if %second_end% lss %second_start% ( 
set /a second_end=%second_end%+60 
set /a minute_end=%minute_end%-1 
) 
set /a second=%second_end%-%second_start% 
:: 計算分鍾數 
if %minute_end% lss %minute_start% ( 
set /a minute_end=%minute_end%+60 
set /a hour_end=%hour_end%-1 
) 
set /a minute=%minute_end%-%minute_start% 
:: 計算小時數 
if %hour_end% lss %hour_start% ( 
set /a hour_end=%hour_end%+24 
) 
set /a hour=%hour_end%-%hour_start% 
echo %hour%:%minute%:%second% 
pause 

 窗口隱藏代碼  前3行

if "%1"=="h" goto Begin 
start mshta vbscript:createobject("wscript.shell").run("""%~0"" h",0)(window.close)&&exit 
:Begin
ping 192.168.1.1 -t

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM