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

事問了個問題:他的系統每天會建一個以月份為名的資料夾(如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. CFDButton:依據副檔名過濾與顯示檔案 
  2. 超方便下載[Google圖書]的資料 (2)
  3. 相當實用的圖示搜尋網站:iconlet (2)
  4. [Xuite] 自由欄位設定的問題 (4)
  5. [PSPad] 複製游標列的內容的Script 
  6. 新版IDEA無法Debug的異常 
  7. Meebo: 用IE隨地使用即時通訊軟體 (1)
  8. 評析三款iPad RSS Google Reader工具 (1)
  9. [轉貼數位時代] Google與百度,正式決戰中國! 
  10. Xuite自由欄位經常造成JavaScript異常!? (12)

歷史熱門文章

  1. 如何手動輸入Plurk的表情圖示? (368,217 點擊/2008-09-29)
  2. 啟用&關閉中華電信ZyXEL P874的無線網路連線功能的步驟[修訂] (119,947 點擊/2011-06-01)
  3. Plurk CSS樣式自訂修改全攻略 (89,386 點擊/2009-07-04)
  4. 簡單放大Plurk輸入區的方法[修訂] (88,869 點擊/2008-09-29)
  5. 網路升級光世代50M/3M與設定ZyXEL P874 (71,883 點擊/2011-05-28)
  6. 輕鬆學會彈指神功-揭露AutoHotkey絕技 (50,802 點擊/2008-04-10)
  7. iPad新手入門技巧 (49,256 點擊/2011-02-05)
  8. iPad鍵盤輸入全攻略 (42,713 點擊/2011-01-01)
  9. 分享世博台灣館主題曲『台灣的心跳聲』MV(附歌詞+下載連結+新歌詞) (40,868 點擊/2010-04-27)
  10. 調整Windows 7環境: 加回工作列的「顯示桌面」圖示 (40,753 點擊/2010-01-02)