使用forfiles时无法执行(错误2)

时间:2010-12-07 17:59:47

标签: batch-file

我想在一个文件夹中删除超过14天的所有文件。

这是我的命令

forfiles -px:\ logs -s -m * .log -d-14 -c“CMD / C del @file”

但执行时,它会为找到的每个文件输出“无法执行(错误2)”。 如果省略-c“CMD / c del @file”,它可以很好地生成超过14天的文件列表。我首先想到这可能是一个许可问题;但是对该文件的任何操作都会产生相同的结果,而我是编译器的管理员。

如果这会产生差异,那么它就是网络共享。

由于

3 个答案:

答案 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