2012-01-31 110 views
0

我想使用批處理文件刪除大於90天的*.sql文件,並且我寫了以下命令。使用批處理文件刪除大於90天的文件

forfiles /M *.sql /d -90 /c "cmd /c del @file 

我不確定上面的命令是否有效?如果不需要建議。

+2

的用法不正確如果您不確定那麼爲什麼不測試它? – Mechaflash 2012-01-31 14:27:29

+0

請確保在沙箱文件夾中運行您的測試,其中包含您不一定關心的文件正在消失... – 2012-01-31 14:29:22

+4

要展開Mechaflash,只需用'echo'替換'del'並檢查返回的文件是否與您期望。然後你知道它的工作原理。 – 2012-01-31 14:29:24

回答

0

FORFILES/M * .SQL/d -90/C「CMD/C德爾@file

SYNTAX (FOR WIN XP FORFILES RESOURCE KIT) 
FORFILES [-p Path] [-m Mask] [-s] [-c Command] [-d [+ | -] {dd/MM/yyyy | dd}] 

您還沒有指定的路徑,所以它會默認爲當前目錄。爲了安全起見,我將指定你的路徑。

forfiles -p「C:\ Path \ To \ sqlfiles」 - m * .sql -d-90 -c「cmd/c del @FILE」

對於你的榜樣,而不是指定路徑:

FORFILES -m * .SQL -d-90/C 「CMD/C德爾@FILE」

編輯:編輯我的命令如使用/而不是-作爲開關符號不起作用。也刪除了鏈接,因爲它另有說明。請注意:切勿在開關和輸入之間插入空格,因爲它會失敗。另外,您的@參數必須全部大寫。另外需要注意的是,ss64.com上的聯機文檔對於使用@PATH

+0

我懷疑Zohaib故意默認爲默認目錄 - 沒有錯。如果使用/ P選項指定路徑,則最好在命令中使用'@ PATH'而不是'@ FILE'。 – dbenham 2012-01-31 15:25:49

+0

@dbenham我用路徑測試了它,它只給出了文件的路徑,不包含文件。如果我使用@FILE,而用'p'開關指定一個目錄,它就可以工作。 – Mechaflash 2012-01-31 15:39:58

+0

說什麼?在Vista上,'@ PATH'提供完整路徑,包括文件名。 '@ FILE'只給出文件名和擴展名,即使使用了/ P選項。因此,除非指定的路徑與當前目錄匹配,否則帶有/ P選項和'@ FILE'的版本將無法在Vista上運行。我不確定FORFILES在其他版本的Windows上的表現如何。 – dbenham 2012-01-31 15:54:17