Получить список путей к папкам вложенных папок заданного местоположения - PullRequest
0 голосов
/ 26 июня 2019

Мне нужно создать пакетный скрипт, чтобы получить список всех подпапок (не рекурсивных!) Каталогов, расположенных в определенном заданном месте, для которых имена каталогов начинаются с одного из нескольких предопределенных значений. Список должен содержать только абсолютные пути. Я не могу использовать Powershell или другие дополнительные инструменты.

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

Это приводит к пустому списку и не работает ...

1 Ответ

1 голос
/ 26 июня 2019

Цикл 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, но использование pushd и popd исключает необходимость избыточного указания корневого каталога.

Или вы можете сделать это:

@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 теперь содержит подстановочный знак, поэтому он фактически ищет соответствующие непосредственные подкаталоги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...