我正在尝试编写一个小批处理脚本,该脚本将从目录中删除文件旧文件。第一个参数是脚本要查看的目录,第二个参数是要保存的文件数。
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
基本上我在这里拥有的是一个目录,它输出从最新到最旧排序的文件名列表。根据 SafeNumber 是什么,它将跳过前几个文件,然后在 SafeNumber <= 0 时继续删除。
我现在遇到的问题是,如果文件名是“Test File.txt”(因为其中包含一个空格。“Test”作为 %1 而不是“Test File.txt”传递到删除中。
关于如何让我的脚本工作的任何想法,或者也许有人有更好的书面解决方案?