获取给定位置的子文件夹的文件夹路径列表

时间:2019-06-26 15:15:39

标签: batch-file

我需要创建一个批处理脚本,以获取位于特定给定位置的目录的所有子文件夹(不是递归!)的列表,其目录名称以几个预定义值之一开头。该列表应仅包含绝对路径。我不能使用Powershell或其他附加工具。

@echo off
set "yourDir=C:\FileStore"
for %%b in ("AB*","FG*") do (
    for /d %%a in ("%yourDir%\%%b") do (
        echo %%~fa
    )
)

这将导致列表为空,并且不起作用...

1 个答案:

答案 0 :(得分:1)

代码中的for %%b循环在当前目录中搜索与模式AB*FG*相匹配的文件

您可以这样做:

@echo off
set "yourDir=C:\FileStore"
pushd "%yourDir%" && (
    for /D %%a in ("AB*","FG*") do (
        echo %%~fa
    )
    popd
)

您也可以在"%yourDir%\AB*","%yourDir%\FG*"后面写上in,但是使用pushdpopd可以避免重复指定根目录。

或者您可以这样做:

@echo off
set "yourDir=C:\FileStore"
for %%b in ("AB","FG") do (
    for /D %%a in ("%yourDir%\%%~b*") do (
        echo %%~fa
    )
)

由于in循环的for %%b子句中不再存在通配符,因此将原封不动地返回项目,而无需在文件系统中搜索匹配的文件。 for /D %%a循环现在包含通配符,因此它实际上搜索匹配的直接子目录。