1

Поэтому я сейчас пишу пакетный скрипт, который будет генерировать файл на основе имени папки. Основная проблема, с которой я застрял - это возвращение строки в моем пути, когда она содержит определенную подстроку. Для уточнения: Путь, который я сейчас ищу:

someOtherFolders\Project_Banana\05_Processing\05_Logs

Теперь мне нужно получить "Project_Banana". Единственное, что всегда исправляется в этой строке, это то, что она начинается с "Project_", но все остальное в структуре папок может различаться (в данном случае это фактическое имя проекта "Banana", где папка находится в пути и т.д.).).

Только вещи, которые я нашел, были связаны с findstr и просто возвращали true или false, но это не то, что я хочу.

1 ответ1

0

Ниже приводится хорошая отправная точка, использующая пакетный скрипт с циклом FOR, просто повторяющий пример пути в соответствии с вашим вопросом и соответствующим образом использующий подстроки пакетных переменных . Вы можете легко заменить команду ECHO в цикле командой DIR, чтобы вывести список каталогов, если это то, что вам нужно; просто откорректируйте номер TOKEN и проверьте. Вы можете заменить ECHO !str! с любой другой командой (командами) вам нужен скрипт для обработки.

Пакетный скрипт 1

@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION

FOR /F "TOKENS=2 DELIMS=\" %%F IN ('ECHO someOtherFolders\Project_Banana\05_Processing\05_Logs') DO (
    SET prjStr=%%~F 
    SET str=!prjStr:Project_=!
    ECHO !str! 
)

GOTO EOF

Результат

Banana

Пакетный скрипт 2

@ECHO ON

SET SRC1=C:\Users
SET SRC2=Documents

FOR /D %%X IN ("%SRC1%\*") DO FOR /D %%Y IN ("%%X\%SRC2%\*") DO ECHO %%~Y
GOTO EOF

Потенциально полезно

@ECHO ON

::SETLOCAL ENABLEDELAYEDEXPANSION
SET DIR=C:\Users
FOR /F %%F IN ('DIR /B /AD "%DIR%"') DO (
    SET fldName=%%~F
    SET SRC1=C:\Users\%fldName%
    SET SRC2=Documents
FOR /D %%X IN ("%SRC1%") DO FOR /D %%Y IN ("%%X\%SRC2%\*") DO ECHO %%~FPY
)
GOTO EOF

Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .