比如在系統中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-5~10 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