Substring uma variável com dois por cento em um arquivo .bat

1

Eu enfrentei um problema ao tentar implementar um arquivo .bat e não encontrei uma resposta. Eu tento exibir todos os nomes de pastas sem o caminho do sistema.

Eu tentei algo assim, mas não funciona.

@echo off
set back=%cd%
for /d %%I in (C:\test\test*) do (
    cd %%I 2>&1 >nul
    echo %%~nxI:~10,5
)
cd %back% 2>&1 >nul

Você tem uma solução, por favor? : -)

    
por NicoFC34 26.07.2018 / 13:31

3 respostas

0

Obrigado pelas suas respostas. Aqui está uma solução que funcionou para mim:

@echo off

setlocal EnableDelayedExpansion

for /d %%I in (C:\test\testV*) do (     
    set current_folder=%%I
    set test_version=!current_folder:~12,6!
    set test_version=!test_version:_=.!

    echo !current_folder!
    echo !test_version!
)
    
por 31.07.2018 / 09:49
1

Substrings funcionam apenas com variáveis normais, não com meta variáveis.
Copie o conteúdo para um var e, como isso está dentro de um (bloco de código), você precisa de DelayedExpansion
Usando o método de pseudo-chamada:

:: Q:\Test18\SU_1345000.cmd
@echo off
PushD .
for /d %%I in (A:\test\test*) do (
    Set "Dir=%%I"
    Call echo %%Dir:~10,5%%
)
PopD

Em uma árvore como esta:

> tree 
└───test
    ├───test1
    ├───test2
    └───test3

que retorna

> Q:\Test18\SU_1345000.cmd
st1
st2
st3

Possivelmente seu deslocamento não estava correto.

    
por 26.07.2018 / 15:44
0

Você pode usar dir /ad /b C:\test\test*

@echo off
set back=%cd%
for /d %%I in (C:\test\test*) do (
    dir /ad /b %%I
)
cd %back% 2>&1 >nul

Este script imprime todos os nomes das pastas nas pastas C:\test\test*

    
por 26.07.2018 / 13:46