У меня есть следующий код:

SET PATH=\\dc01\intern\Product\NightlyBuild\Reg\Reg_20171207.1\out\site
OR
SET PATH=\\dc01\intern\Product\Release\ex\17.12\site

Теперь я хочу получить следующие значения из переменных:

PATH_trimmed = Reg\Reg_20171207.1
OR
PATH_trimmed = 17.12

Таким образом, для каждого пути отдельный раздел должен быть взят из переменной. Так, например, мне нужен метод, который ищет слово: « NightlyBuild » или « Release », чтобы получить желаемое значение. Я попытался сделать это, используя левые строковые методы, такие как:

%path:~0,4%

Но это не работает. Кто-нибудь может направить меня в правильном направлении?

1 ответ1

1

Самый простой способ - проанализировать строку PATH :

@echo off
rem SET PATH=\\dc01\intern\Product\NightlyBuild\Reg\Reg_20171207.1\out\site
rem SET PATH=\\dc01\intern\Product\Release\ex\17.12\site
rem for /f "tokens=4-6 delims=\" %%f in ("%path%") do echo %%f:%%g:%%h
for /f "tokens=4-6 delims=\" %%f in ("%path%") do (
    if %%f==NightlyBuild set PATH_trimmed=%%g\%%h
    if %%f==Release set PATH_trimmed=%%h
)
rem echo PATH_trimmed=%PATH_trimmed%

Это позволяет избежать использования внешних программ: он разбивает PATH для каждой переменной \ на отдельные переменные, игнорируя пустые поля, поэтому первое значимое поле - dc01 , но извлекаются только поля с четвертого по шестое, соответственно, для f , g и h .

Сравнивая %%f , соответствующее значение устанавливается в переменную PATH_trimmed . Техника может быть легко распространена на другие форматы PATH .

Закомментированные строки были использованы для тестирования.

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