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

Batch脚本按指定扩展名列举目录文件的通配符失效问题及解决

通配符不生效的原因

Batch 内置的 == 比较符是精确字符串匹配,不会把右侧的*识别为通配符,只会把*.asm当做普通的固定字符串和%~NXI展开的实际文件名做对比,二者显然不可能相等,所以你的第一版代码永远无法触发匹配逻辑。而你把右侧改成固定的r_draw16.asm时是精确匹配,所以可以正常命中。

修复方案

有两种常用的实现方式:

方案1:直接在FOR的匹配规则中使用通配符(推荐)

FOR命令本身原生支持通配符匹配,直接把筛选条件写到遍历集合里即可,性能最高逻辑也最简单:

  • 只遍历指定目录下的.asm文件:
:: 遍历当前目录
FOR %I IN (*.asm) DO @ECHO %~I
:: 遍历指定目录,比如D:\code目录
FOR %I IN (D:\code\*.asm) DO @ECHO %~I
  • 如需同时遍历指定目录下所有子目录中的.asm文件,增加/R参数即可:
FOR /R "D:\目标目录路径" %I IN (*.asm) DO @ECHO %~I

方案2:在IF中单独判断后缀(适合多筛选条件场景)

如果你需要在遍历所有文件的过程中增加额外判断,可以单独提取文件后缀做精确匹配,加/I参数可以忽略大小写,兼容.ASM大写后缀的文件,加引号可以避免文件名带空格时语法报错:

FOR %I IN (*) DO IF /I "%~xI" == ".asm" @ECHO %~I

注意:如果上述代码是写在.bat/.cmd脚本文件中运行,需要把所有%I替换为%%I,直接在CMD命令行执行才用单百分号。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:45:04