2012-08-14 53 views
0

我想創建一個批處理文件,將文件排序(基於創建日期)Windows目錄下,並只保留最新的X個文件。在目錄管理使用批處理(排序和刪除)

這些文件在名稱中也有一個日期/時間(即file201208140322),所以如果可以通過比較當前日期/時間與子串來做到這一點,我也可以這樣做。

任何人可以幫助我的命令?感謝您的幫助。

+0

你可能會更好使用Python或東西...在Windows命令行是相當薄弱.. – Paladin 2012-08-14 21:31:20

回答

2

您可以使用DIR /O-D /B /A-D獲取按降序修改時間排序的文件列表,然後將此命令的輸出送入FOR /F以便您可以處理這些文件。使用SET /A你可以增加持續跟蹤,我們有多少個文件迄今所看到的一個計數器,這個計數器達到一定的閾值後,就可以開始刪除所有後續條目。

這裏有一個批處理文件,這是否:

@ECHO OFF 
SETLOCAL 
SET PROCESSED_COUNT=0 
SET SKIP_FIRST=5 
SET START_PROCESSING=0 
FOR /F %%f IN ('dir /o-d /b /a-d') DO CALL :process %%f 
ENDLOCAL 
GOTO :eof 

:process 
IF %PROCESSED_COUNT%==%SKIP_FIRST% SET START_PROCESSING=1 
SET /A PROCESSED_COUNT=%PROCESSED_COUNT% + 1 
IF %START_PROCESSING%==0 GOTO :eof 
ECHO Delete file #%PROCESSED_COUNT%: %1 
GOTO :eof 

也有關於這一主題的其它可能的變化,所以上面的是不是唯一的解決方案。

+0

感謝您的答覆。我在哪裏設置目錄? – user1171915 2012-08-15 13:33:25

+1

@ user1171915:開頭是'CD'或將路徑在'DIR'命令。如果您願意,也可以將其設置爲變量,並將其用於「%VARIABLE_NAME%」'。如果路徑包含空格,則引號是必需的。 – Jon 2012-08-15 16:10:48

+0

這裏是我從CMD接收到輸出中:C:\用戶\ KJ> MaintainLogs 刪除文件#3:ProcessPercentOwnership201208130951.txt 刪除文件#4:ProcessPercentOwnership201208100951.txt 刪除文件#5:REIDSExport.log C: \ Users \ a101336> – user1171915 2012-08-15 16:54:34

相關問題