BATCH Cadeia de retorno contendo substring

1

Atualmente, estou escrevendo um script em lote que gerará um arquivo com base no nome de uma pasta. O problema principal com que estou preso é retornar uma string dentro do meu caminho quando ela contém uma certa substring. Para elaborar: O caminho que estou vendo no momento:

someOtherFolders\Project_Banana_Processing_Logs

Agora, o que preciso obter é "Project_Banana". A única coisa que sempre é corrigida com essa string é que ela começa com "Project_", mas tudo o mais na estrutura de pastas pode diferenciar (sendo o nome real do projeto "Banana" neste caso, onde a pasta está localizada no caminho, etc. ).

Apenas as coisas que encontrei estavam relacionadas a findstr e apenas retornariam verdadeiro ou falso, mas não é isso que eu quero.

    
por mRKuolematon 15.02.2017 / 14:31

1 resposta

0

Abaixo está um bom ponto de partida usando um script em lote com um loop FOR simplesmente fazendo eco ao exemplo do caminho conforme sua pergunta e usando substrings variáveis em lote. Você pode facilmente substituir o comando ECHO dentro do loop por um comando DIR para listar os diretórios, se for o necessário; basta ajustar o número TOKEN de acordo e testar. Você pode substituir o ECHO !str! por qualquer outro comando que você precise que o script processe.

Script em lote 1

@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION

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

GOTO EOF

Resultado

Banana

Script em lote 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

Potencialmente Útil

@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

Mais recursos

por 15.02.2017 / 15:51