我需要在Windows Server 2003中计划执行此脚本的任务,该脚本将删除指定文件夹中n天以前的文件。 脚本需要3个参数:
%1 path to folder where files need to be deleted %2 file names (es. *.log) %3 number of days @echo off forfiles -p %1 -s -m %2 -d -%3 -c "cmd /c del /q @path"
如果第一个参数里面没有空格,那么脚本工作正常。 这是一个工作参数的例子:
"C:\Program Files\SCRIPT\DeleteFilesOlderThanXDays.cmd" N:\FOLDER\FOLDER *.zip 60
这是一个不起作用的例子:
"C:\Program Files\SCRIPT\DeleteFilesOlderThanXDays.cmd" N:\Program Files\LOG *.zip 60
这也不起作用:
"C:\Program Files\SCRIPT\DeleteFilesOlderThanXDays.cmd" "N:\Program Files\LOG" *.zip 60
我认为这将是一个报价问题,但我无法弄清楚解决scheme。 如果可能,我不想直接在脚本中插入值
谢谢大家的帮助
不是一个完整的解决scheme,而是一个解决方法,可以让你的任务工作,直到你find一个更好的解决scheme:你可以尝试调用一个batch file,不带参数,除了调用"C:\Program Files\SCRIPT\DeleteFilesOlderThanXDays.cmd" "N:\Program Files\LOG" *.zip 60
谢谢您的回答。 经过进一步的调查后发现,应该修改batch file,在@path周围添加引号以允许空格:
@echo off forfiles -p%1 -s -m%2 -d – %3 -c“cmd / c del / q”@path“”
由于空格,path参数也必须如下引用:
“C:\ Program Files \ SCRIPT \ DeleteFilesOlderThanXDays.cmd”“N:\ Program Files \ LOG”* .zip 60
现在,它不起作用,因为具有“C:\ Program Files \ SCRIPT \ DeleteFilesOlderThanXDays.cmd”后面带引号的参数会失败,并显示错误,如“C:\ Program被识别为内部或外部命令…”所以没有运气了。
解决方法:
“C:\ Program Files \ SCRIPT \ DeleteFilesOlderThanXDays.cmd”。 * .zip 60
开始于:“N:\ Program Files \ LOG”
在batch file中,可以在可以包含空格的参数周围添加引号。 所以,至less在%1左右。
@echo off forfiles -p "%1" -s -m %2 -d -%3 -c "cmd /c del /q "@path""