![DOS 命令列 將檔案移至以上個月命名的資料夾](https://rvso.com/image/1254808/DOS%20%E5%91%BD%E4%BB%A4%E5%88%97%20%E5%B0%87%E6%AA%94%E6%A1%88%E7%A7%BB%E8%87%B3%E4%BB%A5%E4%B8%8A%E5%80%8B%E6%9C%88%E5%91%BD%E5%90%8D%E7%9A%84%E8%B3%87%E6%96%99%E5%A4%BE.png)
我正在嘗試在任務規劃程式中建立一個任務,該任務會根據上個月 pdf 檔案中的日期自動將一些 pdf 檔案移至另一個資料夾中。我遇到的問題是我不知道如何讓命令列回滾到上個月。我首先使用相同的方法建立資料夾,但任務設定為在上個月結束時運行。例如,一項任務在 10 月運行,為當前月份 2010-10 建立資料夾,另一項任務在 11 月運行,在 PDF 編譯後將其移至 2010-10 資料夾。有任何想法嗎?
我使用的日期參數是「%DATE:~0,2%」我嘗試過「%DATE:~0,2% -1」和「%DATE:~0,2%-1」以及全文批次檔為“move [-Y] *.pdf P:\CBO\Physician Monthly Reports\%DATE:~6,4%-%DATE:~0,2% -1”
答案1
您選擇的字元要求日期格式類似於“MM-DD-YYYY”。此命令檢索當前月份的數字並減一並將其保存在名為 的變數中prevmonth
。如果上個月是 12 月,它還會從年份中減去 1:
set /a prevmonth=%DATE:~0,2% - 1
set yearprevmo=%DATE:~6,4%
if %prevmonth% equ 0 set /a yearprevmo=%yearprevmo%-1 & set prevmonth=12
move -Y *.pdf "P:\CBO\Physician Monthly Reports\%yearprevmo%-%prevmonth%"
請注意引號,因為目錄名稱中有空格。
答案2
C:\>move /Y \\your Network server\PROD\PM\FileArchive\2011*.txt \\your Network server\PROD\PM\FileArchive\Documents