此批處理文件提供了一個解決方案:
@echo off
set "SourceFolder=C:\Temp"
for /F "skip=1 delims=" %%I in ('dir "%SourceFolder%\*" /A-D /B /O-D 2^>nul') do del "%SourceFolder%\%%I"
set "SourceFolder="
命令DIR輸出只是文件,因爲該選項的名稱/A-D
(目錄條目與目錄屬性不集)和/B
的列表(裸格式)由於/O-D
由最後修改日期反向排序,這意味着最先輸出最新修改文件的名稱。
通過錯誤輸出消息DIR如果指定的文件夾不包含任何文件被寫入重定向使用2>nul
處理STDERR到設備NUL錯誤消息抑制。重定向運算符>
在此處必須用脫字符^
轉義,以便在Windows命令解釋程序處理整個命令行時將其解釋爲文字字符。稍後對於在後臺的單獨命令過程中執行命令dir "%SourceFolder%\*" /A-D /B /O-D 2>nul
並捕獲寫入到STDOUT的輸出。
對於選項skip=1
導致跳過第一行捕獲的輸出,這意味着忽略最新修改文件的文件名。
FOR選項delims=
禁用默認分裂所捕獲的線的進入空間/製表符分隔的字符串作爲每整個文件名應該由FOR執行的命令被分配給循環變量I
供使用。
DEL刪除文件,如果這是可能的。
爲了解所使用的命令及其工作方式,請打開命令提示符窗口,在其中執行以下命令,並仔細閱讀爲每個命令顯示的所有幫助頁面。
del /?
dir /?
echo /?
for /?
set /?
閱讀也是微軟文章關於Using Command Redirection Operators。
尋找最新的文件並刪除所有不是那個文件的文件? –
你需要自己搜索,研究,編寫和嘗試代碼。發佈一個甚至沒有嘗試執行您需要的任務並要求添加的文件是一個直接的代碼請求,這裏的主題不在話下。 – Compo
你說你想刪除文件,所以使用'rmdir'沒有意義,因爲它刪除目錄... – aschipfl