我想在一个文件夹中删除超过14天的所有文件。
这是我的命令
forfiles -px:\ logs -s -m * .log -d-14 -c“CMD / C del @file”
但执行时,它会为找到的每个文件输出“无法执行(错误2)”。 如果省略-c“CMD / c del @file”,它可以很好地生成超过14天的文件列表。我首先想到这可能是一个许可问题;但是对该文件的任何操作都会产生相同的结果,而我是编译器的管理员。
如果这会产生差异,那么它就是网络共享。
由于
答案 0 :(得分:1)
@file的值是什么,运行代码时当前目录是什么?
winerror.h说错误2是
#define ERROR_FILE_NOT_FOUND 2L
所以我会尝试完全限定您要删除的文件的路径。
- 编辑:
你可以做
forfiles -px:\logs -s -m*.log -d-14 -c"CMD /C del @path"
而不是
forfiles -px:\logs -s -m*.log -d-14 -c"CMD /C del @file"
答案 1 :(得分:1)
我找到了答案:
set DP_DIR=C:\Scripts
forfiles -p%DP_DIR% -s -m*.exe -d-3 -c"cmd /c del \"@FILE""
这很好用。
答案 2 :(得分:0)
我从1998年4月开始使用FORFILES v 1.1。
在我的情况下,如果@PATH或@FILE包含一个带有空格的路径,则无法正确处理。带空格的路径需要双引号。由于forfiles中的执行命令需要双引号,这是我在批处理文件中使用的。 0x22以双引号的形式保存到批处理文件中。我发现用双引号明确地围绕路径和文件可以实现文件的可靠处理。
forfiles -pC:\pictures\ -m*.jpg -d-30 -c"cmd /c echo del 0x22@PATH\@FILE0x22" > c:\temp\delold_pics.bat
call c:\temp\delold_pics.bat