2008年10月21日
如何用批次指令取得上個月的月份
同事問了個問題:他的系統每天會建一個以月份為名的資料夾(如C:\Data\200809、C:\Data\200810等),裡面會放該月每天產生的系統檔案,如何用批次檔把上個月的每個資料夾裡的檔案都刪掉?如果寫支程式(如PowerShell)來做是很簡單,不過卻限制必須使用批次檔來做,這就有點難度了,因為Windows的批次指令實在陽春得可以。
最後測試出來的關鍵解決方法是使用 SET /A,/A 可以做數值運算(arithmetic)。
| rem 把日期裡的斜線拿掉;2008/10/21→20081021 set Today=%DATE:/=% rem 取回今天的年度月份;200810 set ThisMonth=%Today:~0,6% rem 本月份減1取得上個月份 set /A LastMonth=%ThisMonth%-1 |
關鍵點解決了,剩下的就簡單了。
2008/10/23 修訂
有讀者反應若是一月份時程式會有錯,另外一月到九月是一個位數的月份,也要將之補成01~09的兩位數,因而補充以下的修訂版供參考。
| @echo off set ThisYear=%Today:~0,4% rem 取回今天的年度月份;200810 rem 本月份減1取得上個月份 rem 如果是1月份的話,要把年度減1 rem 如果是1月到9月時,左補零成為01~09 echo Year=%ThisYear% |
##
引用URL
http://cgi.blog.roodo.com/trackback/7418765
回應文章 
私密回應
Posted
at 2009年06月15日 15:56
