2015-02-09 68 views
1

我看到這一點 - Batch file to delete files older than N days批處理文件刪除N多小時的舊文件或幾分鐘

但我怎麼能刪除文件早於N個小時或分鐘?

謝謝。

+0

請不要只讀最投票的答案,也可以參考其他的答案。其他幾個答案也支持像昨天寫的[我的答案](http://stackoverflow.com/a/28395552/3074564)這樣的小時間增量,它與秒一起工作。 – Mofi 2015-02-09 16:04:48

+0

[查看此答案](http://stackoverflow.com/a/27297874/1683264)其他想法。 – rojo 2015-02-09 17:31:54

回答

4

它具有挑戰性,因爲WSH當你請求一個文件的日期/時間屬性不會返回日期對象,而是一個字符串,取決於要做到這一點(獨立的時間日期設置)即使WSH \ Jscript腳本\ VBscript的時間設置(可以使用wmi,但這會影響性能)。 我想你已經安裝了.net框架,這使得任務變得更加簡單。 Here's一個混合工具,應該在你的情況下工作。你可以用任何你想要的名字保存它。下面是如何使用它(它在這個例子叫FileDateFilterJS.bat):

@echo off 

for /f "tokens=* delims=" %%# in ('FileDateFilterJS.bat "." -hh -5') do (
    echo deleting "%%~f#" 
    echo del /q /f "%%~f#" 
) 

pause 

當時間是5 - -hh -5和目錄是當前 - "."。你可以刪除echodel命令。

這個腳本比我預料的要多得多(儘管我已經研究過這個話題並準備好了一些部分),並且沒有經過太多的測試,所以可能還是沒有任何bug。我想幫助消息和選項可以改進。

+1

'FSO.GetFile。DatePropertyOfSomeSort'似乎爲我處理'Date()'對象數學。請參閱[此答案](http://stackoverflow.com/a/27297874/1683264)爲例。我幾乎不願意指出這一點,因爲你似乎已經花費了大量的時間和精力投入到JSC混合動力車中。 'o°/' – rojo 2015-02-09 17:36:31

+1

是的,證實。 'WSH.Echo(typeof file.DateLastModified)'回聲'日期'。好吧,無論如何都有+1。 – rojo 2015-02-09 17:46:21

+0

這項工作。感謝 – houngtze 2015-02-09 17:58:29

1

Here's另一個腳本只依賴於WSH/JScript和幾乎相同的接口(並且不需要安裝.NET)。爲了證明5個多小時的舊文件使用:

FileTimeFilterJS.bat "." -hh -5 -filetime modified 
1

無論是解決方案在這裏爲我工作。他們是非常創新的解決方案,第一個(.net/FileTimeFilerJS.bat [原文如此])實際上爲我工作過一次。然而,當我試圖在另一個文件夾中調用它時,它只是崩潰。我嘗試了第二個(jscript/FileTimeFilterJs.bat),但它沒有成功刪除超過一個小時的所有文件。

我的解決方案需要一個可執行文件,但是我發現它對我來說是最好的解決方案。

我從GnuWin32下載了FindUtils,並提取了3個文件(您必須下載兩個zip文件):libintl3.dll,libiconv2.dll和find.exe(大小合計爲1MB左右)。我將find.exe重命名爲gnu_find.exe,以避免Windows FIND命令。

然後,您可以運行GNU漂亮的命令(以下命令是所有的zip文件在環境變量%FLDR%指定的文件夾年齡超過120分鐘):

gnu_find %fldr% -name *[.:]zip -type f -mmin +120 -delete 

相反* .zip文件,我使用* [.:] zip,因爲Windows 7+會在查找可以使用前擴展* .zip。

Find Utils bin

Find Utils deps

相關問題