Cmd 带有正则表达式路径字符串的dir子树
我有这样的文件树:Cmd 带有正则表达式路径字符串的dir子树,cmd,batch-file,Cmd,Batch File,我有这样的文件树: C:\Users\user\AppData\Local\app-package\blabla C:\Users\user\AppData\Local\app-package\blabla\something C:\Users\user\AppData\Local\app-package\app-1.1.6 C:\Users\user\AppData\Local\app-package\app-1.1.6\resources C:\Users\user\AppData\Loca
C:\Users\user\AppData\Local\app-package\blabla
C:\Users\user\AppData\Local\app-package\blabla\something
C:\Users\user\AppData\Local\app-package\app-1.1.6
C:\Users\user\AppData\Local\app-package\app-1.1.6\resources
C:\Users\user\AppData\Local\app-package\app-1.1.6\resources\app.package.unpacked
C:\Users\user\AppData\Local\app-package\app-1.1.6\resources\app.package.unpacked\daemon
我试过指挥
D:\tmp>dir /B/S/AD "%LOCALAPPDATA%\app-package\app*"
期望:
C:\Users\user\AppData\Local\app-package\app-1.1.6
C:\Users\user\AppData\Local\app-package\app-1.1.6\resources
C:\Users\user\AppData\Local\app-package\app-1.1.6\resources\app.package.unpacked
C:\Users\user\AppData\Local\app-package\app-1.1.6\resources\app.package.unpacked\daemon
实际产出:
C:\Users\user\AppData\Local\app-package\app-1.1.6
C:\Users\user\AppData\Local\app-package\app-1.1.6\resources\app.package.unpacked
为什么会发生这种情况以及如何修复它?您似乎认为通配符
app*
仅与给定目标目录中的项匹配,但实际上它与路径的最后一个元素匹配。这就解释了为什么:
dir/B/S/AD”%LOCALAPPDATA%\app package\app*
提供以下结果:
C:\Users\user\AppData\Local\app-package\app-1.1.6
C:\Users\user\AppData\Local\app package\app-1.1.6\resources\app.package.unpackage
将app*
更改为app-*
,输出结果仅为:
C:\Users\user\AppData\Local\app-package\app-1.1.6
我认为你需要的是:
pushd”%LOCALAPPDATA%\app package“&&(对于/F“eol=| delims=“%I in('dir/B/A:D-H-S”app-*”)do@echo(%~fI&dir/S/B/A:D-H-S”%I“&popd)
为了更好地理解它的作用,下面是一个带有一些解释性注释的版本:
@echo关闭
rem//更改为目标目录:
pushd“%LOCALAPPDATA%\app-package”和(
rem//通过目标目录中的匹配目录循环:
对于/F“eol=| delims=“%%I in('dir/B/A:D-H-S“app-*”)do(
rem//返回匹配的子目录本身:
回声(%)~fI
rem//返回匹配子目录的内容:
目录/S/B/A:D-H-S“%%I”
)
rem//从目标目录返回:
邻苯二胺
)
这可能很有用: