当我在任务调度程序中放入一个批处理程序时,它并没有完成整个任务,那么为什么会发生这种情况呢?
When I put a batch program in the task scheduler, it didn't finish the whole task, so why did this happen?
这个问题是来自调度程序任务、批处理程序,还是我想使用批处理程序删除的文件夹中的文件?
这是批处理程序:
forfiles /p "D:\nameOfFolder" /s /m *.* /d -7 /c "cmd /c del @path"
你确定你有这样的文件吗?
我尝试了以下(非常相似)命令:
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.
.
本身不是提供给 /m
.
的有效搜索掩码
您需要使用 *.*
(全部)*.ext
(提供的扩展名)*string*.*
(名称包含字符串的文件)。
?
也支持作为搜索掩码来匹配任何字符。示例:*.?a*
将匹配任何扩展类型为 a
作为第二个字符
的文件
将 /M *.*
替换为 /M *
甚至包括没有扩展名的文件,因为 forfiles
对待通配符的方式与大多数其他命令不同。 /M *
甚至可以省略,因为这是默认设置。
注意 forfiles
会同时遍历文件和目录,因此您需要排除后者,因为 del
可能会尝试删除其内容。因此,根据 forfiles
特定变量 @isdir
.
实现一个条件
forfiles /S /P "D:\nameOfFolder" /M * /D -7 /C "cmd /D /C if @isdir==FALSE del @path"
作为旁注,切勿在(引用的)路径后附加反斜杠,因为 /P "D:\"
之类的内容会使命令失败,因为 \"
构成 [=13 的转义引号=], 破坏了命令行。但是,您可以指定 /P "D:\."
.
这个问题是来自调度程序任务、批处理程序,还是我想使用批处理程序删除的文件夹中的文件? 这是批处理程序:
forfiles /p "D:\nameOfFolder" /s /m *.* /d -7 /c "cmd /c del @path"
你确定你有这样的文件吗?
我尝试了以下(非常相似)命令:
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.
.
本身不是提供给 /m
.
的有效搜索掩码
您需要使用 *.*
(全部)*.ext
(提供的扩展名)*string*.*
(名称包含字符串的文件)。
?
也支持作为搜索掩码来匹配任何字符。示例:*.?a*
将匹配任何扩展类型为 a
作为第二个字符
将 /M *.*
替换为 /M *
甚至包括没有扩展名的文件,因为 forfiles
对待通配符的方式与大多数其他命令不同。 /M *
甚至可以省略,因为这是默认设置。
注意 forfiles
会同时遍历文件和目录,因此您需要排除后者,因为 del
可能会尝试删除其内容。因此,根据 forfiles
特定变量 @isdir
.
forfiles /S /P "D:\nameOfFolder" /M * /D -7 /C "cmd /D /C if @isdir==FALSE del @path"
作为旁注,切勿在(引用的)路径后附加反斜杠,因为 /P "D:\"
之类的内容会使命令失败,因为 \"
构成 [=13 的转义引号=], 破坏了命令行。但是,您可以指定 /P "D:\."
.