iT邦幫忙

0

請問如何批次刪除資料夾

請問如何批次刪除資料夾

例如:我用批次檔做異地備份,是用日期去區分

如:2012-05-01 ~ 2012-07-31

備份三個月的資料後,因為怕備份主機的硬碟空間已滿,想寫一個批次檔,從2012-08-01起,
開始一個一個刪除2012-05-01的資料。

比如:2012-08-01 刪除2012-05-01
2012-08-02 刪除2012-05-02

類似這樣批次刪除的批次檔要怎麼寫???

再次搜尋到自己的文章~
反而遇到問題:
1. set /A _MyDate=%_MyDate%-300
得到的數字不一定是正確日期

2. forfiles 刪除檔案時會問Y/N

2 個回答

10
mikeko
iT邦新手 1 級 ‧ 2012-05-17 16:00:31
最佳解答

FOR /F "tokens=1-4 delims=/ " %%a IN ("%date%") DO (
SET _MyDate=%%a%%b%%c
)

set /A _MyDate=%_MyDate%-30

rmdir %_MyDate% /s/q

4
Ken(Bigcandy)
iT邦大師 1 級 ‧ 2012-05-18 13:32:23

1.使用forfiles指令自動刪除特定目錄下超過N天的任何文件,下面工作目錄為e:\97Temp,7天,包含子目錄

<pre class="c" name="code">@echo off
@forfiles /p "e:\97Temp" /s /m *.* /d -7 /c "cmd /c del @path"
@dir /ad /b /s "e:\97Temp" |sort /r > "E:\Emptydir.txt"
@For /f "tokens=*" %%i in (E:\Emptydir.txt) DO rd "%%i"
@del E:\Emptydir.txt
@exit

2.日期變數

<pre class="c" name="code"> %date:~0,4%%date:~5,2%%date:~8,2%

Robocopy 也能做到

搬移7日前檔案:先建立當日目錄,才搬移檔案,含目錄,並記錄

<pre class="c" name="code">/PURGE --刪除來源中不再存在的目的檔案/目錄



<pre class="c" name="code">mkdir E:\98Delete\%date:~0,4%%date:~5,2%%date:~8,2%
@robocopy E:\99Delete\ E:\98Delete\%date:~0,4%%date:~5,2%%date:~8,2% /s *.* /maxage:999 /minage:7 /move /v /fp /TS /tee /log+:E:\97Temp\move7DaysBefore_%date:~0,4%%date:~5,2%%date:~8,2%.log

修正:實測無誤的指令:

<pre class="c" name="code">forfiles -pE:\97Temp -d-7 -c"CMD /C del @FILE"

我要發表回答

立即登入回答