我想寫一個小的批處理腳本,將從目錄中刪除文件的舊文件。 第一個參數是腳本查看的目錄,第二個參數是要保留的文件數量。批腳本,對於使用目錄的結果
rem @ECHO OFF
rem %1 is the path in which to look for the files
rem %2 is the number of recent files to preserve
if [%1] EQU [] (
echo ERROR: Missing Required Paramater directory path.
goto :eof
)
if [%2] EQU [] (
echo ERROR: Missing Required Paramater, number of files to preserve
goto :eof
)
if %2 LSS 0 (
echo ERROR: Number of files to preserve provided was negative
goto :eof
)
set FolderPath=%1
set SafeNumber=%2
cd %FolderPath%
for /f %%f in ('dir /O-D /A-D /B') do call :delete %%f
goto :eof
:delete
if %SafeNumber% LEQ 0 (
del %1
) else (
set /a SafeNumber-=1
)
goto :eof
:eof
基本上我在這裏是一個dir,輸出從最新到最舊的排序文件名列表。根據SafeNumber是什麼,它會跳過前幾個文件,然後進行刪除一次SafeNumber < = 0.
現在的問題是,如果文件名是「Test File.txt」(as in「包含空格,」Test「作爲%1傳入刪除,而不是」Test File.txt「。
關於如何讓我的腳本工作,或者有人有更好的書面解決方案的任何想法?
改變for語句是: 在('DIR/OD/AD/B/F 「delims =」 %%˚F %FolderPath%')do call:刪除「%% f」 現在刪除獲取完整的文件名。語錄幫助了一大堆,沒有想到這個謝謝。 – 2009-07-27 21:44:34