如何用批次指令取得上個月的月份-再修訂版

事問了個問題:他的系統每天會建一個以月份為名的資料夾(如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
rem 把日期裡的斜線拿掉;2008/10/21→20081021
set Today=%DATE:/=%

set ThisYear=%Today:~0,4%

rem 取回今天的年度月份;200810
set ThisMonth=%Today:~4,2%

if "%ThisMonth%"=="08" set ThisMonth=8
if "%ThisMonth%"=="09" set ThisMonth=9

rem 本月份減1取得上個月份
set /A LastMonth=%ThisMonth%-1

rem 如果是1月份的話,要把年度減1
if "%LastMonth%"=="0" set /A ThisYear=%ThisYear%-1

if "%LastMonth%"=="0" set LastMonth=12

rem 如果是1月到9月時,左補零成為01~09
if "%LastMonth:~1,1%"=="" set
LastMonth=0%LastMonth%

echo Year=%ThisYear%
echo Month=%LastMonth%

2009/06/03 再修訂:

網友反應當月份為08、09時會出現下列錯誤:

不正確的數字。數字常數必須是十進位 (17),
十六進位 (0x11) 或八進位 (021)。

使用 set /? 指令後看到如下說明:

0x 字首在數字前方代表十六進位數字、0b 字
首代表二進位數字或 0 字首代表八進位數字,否則數字值都是指十進位
數字。所以 0x12 就和 18、022 等相同。請注意八進位數字可能容易
弄錯: 像 08 和 09 就不是正確的數字,因為 8 和 9 並不是八進位的
正確數字。

因此08、09被當成八進位的數字了,解決方法似乎只有先把開頭的0去掉後再來運算:

rem 取回今天的年度月份;200810
set ThisMonth=%Today:~4,2%

if "%ThisMonth%"=="08" set ThisMonth=8
if "%ThisMonth%"=="09" set ThisMonth=9

##

您可能也會有興趣的類似文章

10 則留言 »如何用批次指令取得上個月的月份-再修訂版

填寫回應

 

 

 

您可使用這些HTML標籤

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

隨機文章

  1. [WordPress 3] 將Twenty Eleven佈景主題加上分頁導航樣式 
  2. ◎權充留言板……◎ (5)
  3. 取得方正明體、方正楷體與手動設定檔案關聯 (1)
  4. 補遺:[軟體] 超強 Windows 字型美化軟體 – GDI++ (8)
  5. 變更Spb選單資料夾的顯示樣式與新增/刪除功能 
  6. [轉貼CNet] 慕尼黑選擇Debian作為Linux移轉版本 (1)
  7. [轉貼] PowerPoint今年20歲 
  8. [Site] 簡單又美觀的TO-DO 清單網站 [修改] 
  9. [轉貼] 台北牛肉麵節 
  10. 不想再自動啟動到X Window的方法 (2)

歷史熱門文章

  1. 如何手動輸入Plurk的表情圖示? (352,896 點擊/2008-09-29)
  2. 簡單放大Plurk輸入區的方法[修訂] (86,910 點擊/2008-09-29)
  3. 啟用&關閉中華電信ZyXEL P874的無線網路連線功能的步驟[修訂] (83,681 點擊/2011-06-01)
  4. Plurk CSS樣式自訂修改全攻略 (83,022 點擊/2009-07-04)
  5. 網路升級光世代50M/3M與設定ZyXEL P874 (53,114 點擊/2011-05-28)
  6. 輕鬆學會彈指神功-揭露AutoHotkey絕技 (43,107 點擊/2008-04-10)
  7. iPad新手入門技巧 (40,340 點擊/2011-02-05)
  8. 分享世博台灣館主題曲『台灣的心跳聲』MV(附歌詞+下載連結+新歌詞) (38,131 點擊/2010-04-27)
  9. 把HTC Touch HD操作介面換成Spb Mobile Shell,美觀又便利! (37,942 點擊/2009-02-18)
  10. 另一套適用手機的影片轉檔工具:WinAVI 3GP/MP4/PSP/iPod Video Converter (35,892 點擊/2009-04-18)