iT邦幫忙

0

del指令加日期

請問我可以寫各批次檔
然後用DEL指令
限定日期刪除嗎
例如我要刪除今天和昨天以前的所有檔案可以嗎

看更多先前的討論...收起先前的討論...
davistai iT邦大師 1 級 ‧ 2008-06-23 15:41:30 檢舉
您當然可以寫囉^^
不過刪除今天和昨天以前的所有檔案--> 那不是把所有的檔案全殺了??
misadm iT邦高手 10 級 ‧ 2008-06-23 16:09:52 檢舉
好像是耶!那就用 『DEL *.*』就好啦! ^^|||

不過據我所知,光是 DEL 指令,是沒有辦法刪除指定日期的檔案喔!
貼一下 DEL 的說明給你參考:

C:\>del /?
刪除一個或更多檔案。

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

names 指定一個或更多檔案或目錄清單。
可以使用萬用字元來刪除多個檔案。 如果
指定目錄,這個目錄內的所有檔案
將被刪除。

/P 刪除每個檔案前,先提示確認。
/F 強制刪除唯讀檔案。
/S 由所有子目錄刪除指定的檔案。
/Q 安靜模式,不要問是否確定刪除全域萬用字元
/A 根據屬性選取要刪除的檔案
attributes R 唯讀檔案 S 系統檔案
H 隱藏檔案 A 準備保存的檔案
- 首碼表示不是

如果您啟用擴充命令,DEL 和 ERASE 命令的變更如下:

/S 參數的顯示方式完全相反,它只會顯示已刪除的檔案,不會顯示它找不到的
檔案。
davistai iT邦大師 1 級 ‧ 2008-06-23 23:08:19 檢舉
就是說嘛,謝misadm大的補充^^
鐵殼心 iT邦高手 1 級 ‧ 2008-06-23 23:42:51 檢舉
IT邦人才輩出
連古老的DOS command都還有人會, 請受在下一拜.
pqr0007 iT邦研究生 1 級 ‧ 2008-06-27 16:19:00 檢舉
I agree... ( as mentioned above)...
davistai iT邦大師 1 級 ‧ 2008-06-27 17:15:48 檢舉
DEL 還不算古老吧? 呃? 現代也還有用啊?
應該說,不會DOS(或者說不會查詢DOS指令如何用)就只是半各IT人
cooch iT邦研究生 3 級 ‧ 2010-07-17 10:54:46 檢舉
forfiles 指令可以做到(我也是最近才知道的!)

直接將我用的批次檔貼上,
該批次檔最主要是要刪除超過30天以上的 IIS 記錄檔
set LogPath=C:\WINDOWS\system32\LogFiles\W3SVC4
set DayToKeepLog=30

C:\WINDOWS\system32\forfiles.exe -p "%LogPath%" /s /m *.log /d -%DayToKeepLog% -c "cmd /C del @FILE"
32
vincent118
iT邦高手 5 級 ‧ 2008-06-23 17:24:56
最佳解答

windows 下有人已經寫過VBS http://blog.lyhdev.com/2007/05/vbscript.html。修改一下設定到AT裡面(排定的工作)就可以用了。

如果是Linux下 直接在cron table 設定
find /home/pfn/ -type f -mtime +14 -exec rm -rf {} \;
裡面的14代表天數。

28
jhwang
iT邦好手 10 級 ‧ 2008-06-24 01:58:52

擷取日期的方式可以參考我之前分享的:
在Windows裡擷取前一天日期的指令碼

刪除檔案的話,如果檔案上面有加註日期,那就可以用上述的方式,搭配 del /s /q 來刪除

假設6/24要刪除3天前的檔案,欲刪除的檔名為log_20080621.txt,舉例如下:

<pre class="c" name="code">echo wscript.echo dateadd("d",-3,date) >%tmp%\tmp.vbs   
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set y=%%i   
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set m=%%j   
for /f "tokens=1,2,3 delims=/- " %%i in ('cscript /nologo %tmp%\tmp.vbs') do set d=%%k   
if %m% LSS 9 set m=0%m%   
if %d% LSS 9 set d=0%d%
del /s /q d:\backup\log_%y%%m%%d%.txt

如果

如果檔案是分資料夾存放,資料夾有加註日期,可以直接用 rmdir /s /q 刪除整個資料夾
(請小心使用,詳細使用說明請參考 rmdir /?)

<pre class="c" name="code">rmdir /s /q d:\backup\log_%y%%m%%d%

然後用 Windiws 內建的排程,定期執行 bat 檔即可
最後請注意,bat 檔最好放在 C 槽,免得執行上出問題

4
pqr0007
iT邦研究生 1 級 ‧ 2008-06-27 16:19:24

who is your teacher?? ... ask your teacher...

我要發表回答

立即登入回答