首页 > 解决方案 > 获取给定位置的子文件夹的文件夹路径列表

问题描述

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

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

这会导致一个空列表并且不起作用......

标签: batch-file

解决方案


代码中的循环在当前目录中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包含通配符,因此它实际上搜索匹配的直接子目录。


推荐阅读