close

把以下程式碼 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 授權,白話意思就是可以直接轉走,但是要附出處與作者)] 

Creative Commons License




arrow
arrow
    全站熱搜
    創作者介紹
    創作者 小必 的頭像
    小必

    David Liao's Blog

    小必 發表在 痞客邦 留言(0) 人氣()