Obtém parte da string baseada em um valor específico

0

Eu tenho o seguinte código:

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

Agora quero extrair os seguintes valores das variáveis:

PATH_trimmed = Reg\Reg_20171207.1
OR
PATH_trimmed = 17.12

Portanto, para cada caminho, uma seção diferente deve ser retirada da variável. Por exemplo, eu preciso de um método que pesquise a palavra: " NightlyBuild " ou " Release " para recuperar o valor desejado. Tentei fazer isso usando métodos de string à esquerda, como:

%path:~0,4%

Mas isso não funciona. Alguém pode me guiar na direção certa?

    
por Rotan075 15.01.2018 / 14:39

1 resposta

1

A maneira mais fácil é analisar a string PATH : -

@echo off
rem SET PATH=\dc01\intern\Product\NightlyBuild\Reg\Reg_20171207.1\out\site
rem SET PATH=\dc01\intern\Product\Release\ex.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%

Isso evita o uso de programas externos: ele divide PATH em cada \ em variáveis separadas, ignorando campos em branco, portanto o primeiro campo significativo é dc01 , mas apenas o quarto ao sexto campo é extraído, para f , g e h , respectivamente.

Ao comparar %%f , o valor apropriado é definido na variável PATH_trimmed . A técnica pode ser facilmente estendida para outros formatos PATH .

As linhas comentadas foram usadas para fins de teste.

    
por 15.01.2018 / 16:18

Tags