Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmd 带有正则表达式路径字符串的dir子树_Cmd_Batch File - Fatal编程技术网

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//从目标目录返回:
邻苯二胺
)
这可能很有用: