Windows dir命令带通配符遍历子目录结果异常如何解决?
问题产生原因
- Windows
dir命令的通配符匹配规则为:仅对搜索路径的最后一段路径名生效。你当前执行的命令中,app*通配符会强制要求所有输出的目录的最后一级名称必须以app开头,递归搜索过程中所有不符合该命名规则的子目录都会被直接过滤。 - 你给出的目录结构中,只有
app-1.1.6、app.package.unpacked两个目录符合app*命名规则,resources、daemon因为名称不匹配被过滤,因此仅输出2条结果。
修复方案
如果你的需求是:找到%LOCALAPPDATA%\app-package\下所有名称以app开头的根目录,再输出这些根目录下所有层级的子目录,可使用以下两种方案:
方案1:CMD原生命令
for /d %d in ("%LOCALAPPDATA%\app-package\app*") do @dir /B /S /AD "%d"
提示:如果将该命令写入
.bat批处理文件中使用,需要把变量%d替换为%%d。
方案2:PowerShell命令(逻辑更清晰)
Get-ChildItem -Path "$env:LOCALAPPDATA\app-package\app*" -Directory -Recurse | Select-Object -ExpandProperty FullName
内容的提问来源于stack exchange,提问作者chencyu
相关产品推荐
相关产品推荐

