【问题标题】:Windows Bat - The System Cannot Find the File SpecifiedWindows Bat - 系统找不到指定的文件
【发布时间】:2017-09-07 15:56:51
【问题描述】:

我在 .bat 中使用以下代码来清理目录。它是删除时间戳超过 14 天的任何目录。问题是,这个脚本有效并删除了相应的目录。但是它返回错误: ERROR: The system cannot find the file specified我无法破译造成这种情况的原因,并想追根究底。

FORFILES /S /D -14 /p %cd% /M "*" /C "cmd /c IF @isdir == TRUE rmdir @path /s /q"

【问题讨论】:

  • 可以显示日志文件吗?
  • 这只是一个猜测。我将假设 FORFILES 枚举了它必须首先找到的所有目录。然后它将它们传递给需要执行的 cmd。因此,因为您使用了 /S 选项,它枚举了一个存在于您已删除的父目录中的子目录。
  • 它看起来好像你同时使用 /P/M 无缘无故,所以也许使用 FORFILES /S /D -14 /C "CMD /C IF @ISDIR==TRUE IF EXIST @PATH RD /S /Q @PATH" 会更好。
  • 根据@Squashman 评论让它工作。 @Compo 是正确的,我不需要 /p 或 /m ...这是有效的代码..FORFILES /D -14 /C "cmd /c IF @isdir == TRUE rmdir @path /s /q"。有没有办法现在也查询文件,不仅是日期,而且说只包含数字的目录名称......我将更新问题来表示这一点。
  • FORFILES 中不支持正则表达式。

标签: windows batch-file exe


【解决方案1】:

关于你问的后续问题:

使用 Windows 批处理文件,查找名称中不包含任何字母的目录。它们可以包含特殊字符和空格。无需确认即可删除目录及其子文件夹。

1.bat放在你要清理的目录下。打开一个cmd窗口并运行1.bat。

  1. 查找名称中不包含任何字母的所有目录,并将其名称输出到 1.txt。它们可以包含特殊字符和空格。
  2. 回显要删除的目录。不要删除它们。
  3. 删除注释标签以删除目录和子目录而无需确认。

    1.bat for /f "usebackq delims=|" %%a in ('DIR /b /ad ^| findstr /v /r "[a-Z]"') do echo "%cd%\%%a" will be removed without confirmation. :: for /f "usebackq delims=|" %%a in ('DIR /b /ad ^| findstr /v /r "[a-Z]"') do rd /s /q "%cd%\%%a"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 2013-11-21
    • 2023-03-17
    • 2017-12-21
    相关资源
    最近更新 更多