You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Batch脚本dir /b输出包含目录名及加/A-D参数运行报错问题

问题原因解答

1. 原脚本输出包含FULL目录名的原因

  • FORFILES命令默认同时匹配文件和目录,你新增的FULL、DIFF、LOG三个子目录中,只有FULL目录的最后修改时间早于8天前,另外两个目录的修改时间在8天以内,因此只有FULL目录被/d -8参数筛选命中。
  • 原脚本中dir /B @file没有过滤目录的参数,命中FULL目录时dir会直接输出目录名,所以最终输出中会出现FULL。

2. 修改后脚本出现File Not Found报错的原因

  • 你新增的/A-D参数要求dir只输出文件,但FORFILES仍然会先命中符合时间条件的目录,对命中的目录执行dir /A-D 目录名时,系统无法找到同名的文件,就会抛出File Not Found错误。出现两次报错说明FORFILES一共匹配到了2个修改时间超过8天的目录。

优化建议

直接使用FORFILES自带的参数过滤文件,不需要嵌套dir命令,修改为如下写法即可同时避免输出目录和报错:

PUSHD \\SERVER_NAME\M$\MSSQL
:: /A:-D 表示只匹配文件,排除目录
FORFILES /P Backup /s /A:-D /d -8 /C "cmd /c echo @file">K:\ScriptLogs\OutPut
POPD

内容的提问来源于stack exchange,提问作者Kris。

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 09:15:06