这个问题是来自调度程序任务、批处理程序,还是我想使用批处理程序删除它的文件夹中的文件?这是批处理程序:
forfiles /p "D:\nameOfFolder" /s /m *.* /d -7 /c "cmd /c del @path"
这个问题是来自调度程序任务、批处理程序,还是我想使用批处理程序删除它的文件夹中的文件?这是批处理程序:
forfiles /p "D:\nameOfFolder" /s /m *.* /d -7 /c "cmd /c del @path"
.
就其本身而言,它不是提供给 的有效搜索掩码/m
。
您需要使用*.*
(all) *.ext
(提供的扩展名)*string*.*
(名称中包含字符串的文件)。
?
也支持作为搜索掩码来匹配任何字符。示例:*.?a*
将匹配任何扩展类型a
为第二个字符的文件
替换/M *.*
为/M *
甚至包含没有扩展名的文件,因为forfiles
通配符的处理方式与大多数其他命令不同。/M *
甚至可以省略,因为无论如何这是默认设置。
关于forfiles
迭代文件和目录,因此您需要排除后者,因为del
可能会尝试删除其内容。因此,实现基于forfiles
-specific 变量的条件@isdir
。
forfiles /S /P "D:\nameOfFolder" /M * /D -7 /C "cmd /D /C if @isdir==FALSE del @path"
作为旁注,永远不要将尾部反斜杠附加到(引用的)路径,因为类似/P "D:\"
的东西会让命令失败,因为它\"
构成了 的转义引号forfiles
,破坏了命令行。但是,您可以指定/P "D:\."
.
你确定你有这样的文件吗?
我尝试了以下(非常相似的)命令:
forfiles /p "C:\Temp_Folder" /s /m . /d -7 /c "cmd /c echo @path"
ERROR: No files found with the specified search criteria.
我注意到的一件事是目录的名称不应以反斜杠结尾:
forfiles /p "C:\Temp_Folder" is working fine.
forfiles /p "C:\Temp_Folder\" is not working.