把以下程式碼 copy 到一個.bat檔裡:
echo wscript.echo dateadd("d",-1,date) >%tmp%\tmp.vbs
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k
if %m% LSS 9 set m=0%m%
if %d% LSS 9 set d=0%d%
然後 %y%、%m%、%d% 就可以分別呼叫出一天前的年、月、日了
第一行的 dateadd("d",-1,date) 的 -1 如果改成 -2,就是二天前,依此類推
舉例來說,如果想要 copy 檔案到其它地方放,就可以在 .bat 檔接著寫:
copy c:\log\*.log d:\log\%y%%m%%d%\
然後排程每天凌晨 00:01 分執行這個.bat檔,假設 2008年5月8號00:01 執行的話
就會把 *.log 檔都 copy 到d:\log\2008\200805\20080507\下面
當然,也可以用 move 的,或是要先壓縮再備份,都可以自行運用
若第一行的 dateadd("d",-1,date) 改成 dateadd("m",-1,date),則取一個月前的日期
改成 dateadd("m",-2,date),則是取二個月前
所以我都拿來改成自動刪除半年前的資料,一樣可以自行運用
不過我記得好像哪個版本的 Windows,因為 date 的格式不一樣,所以 tokens 那裡要改
(可能是把 1,2,3 改成 2,3,4),所以設定之前記得測試一下喔
當然這是窮人版的做法,網路上可能有一大堆的備份軟體都可以做到
因為我個人不喜歡在系統上灌有的沒的,用愈簡單的方式來做,可能問題會愈少一點
補充說明,如果只要擷取當天的日期,語法就更精簡,第一行和最後二行都不需要,如:
for /f "tokens=1,2,3 delims=/- " %%i in ("%date%") do set y=%%i
for /f "tokens=1,2,3 delims=/- " %%i in ("%date%") do set m=%%j
for /f "tokens=1,2,3 delims=/- " %%i in ("%date%") do set d=%%k
其實只要看懂上面程式碼在幹嘛,還可以改的更精簡:
for /f "tokens=1,2,3 delims=/- " %%i in ("%date%") do set dd=%%i%%j%%k
這樣用%dd%直接叫出年月日,總之就是自行視狀況彈性修改囉~
本文摘自:IT邦幫忙 如有侵權請來信告知
This work is licensed under a Creative Commons Attribution-Share Alike 2.5 Taiwan License. [本文採 cc-by-sa 授權,白話意思就是可以直接轉走,但是要附出處與作者)]
留言列表