Precisa excluir um resultado específico de um Batch For Loop

Precisa excluir um resultado específico de um Batch For Loop

Eu tenho um script que carrega recursivamente arquivos de um diretório específico (e subdiretórios) em um caminho de classe java usando um loop FOR. Se parece com isso:

PARA /rdiretório%%F IN (*.jar) FAÇA a chamada: addcp %%F

Infelizmente, preciso agora excluir um subdiretório específico dos resultados (não quero que alguns dos arquivos jar sejam carregados). Tentei aninhar uma instrução IF dentro do loop FOR, mas não obtive sucesso.

Infelizmente, alterar as linguagens de script não é uma opção, e iterar cada subdiretório seria um pesadelo de manutenção. Alguém tem uma maneira de fazer isso?

Eu tentei algo como:

PARA /rdiretório%%F IN ( *.jar) DO IF %%F== *string *DO call:addcp %%F

mas não funcionou.

Responder1

Aqui está um script para despejar uma lista dos caminhos absolutos de todos os arquivos EXE em “%ProgramFiles%”, exceto aqueles que estão no subdiretório “Windows NT”. Eu acho que você provavelmente poderia superar isso para o que está procurando.

@echo off

for /f "usebackq delims=" %%i in (`dir "%ProgramFiles%\*.exe" /s /a /b`) do call :checkit "%%i" 
goto end

:checkit
echo %1 | find /i "%ProgramFiles%\Windows NT\" >NUL 2>NUL
if errorlevel 1 echo %~1

:end

Responder2

Eu recomendaria find, dê uma olhada em man find. Algo como find "%ProgramFiles%\" -iname ".exe" ! -regex "%ProgramFiles%\folder_to-exclude.$" -exec call :addcp {} \; pode fazer o que você quiser.

Responder3

%%F resolve o caminho para o arquivo .jar, não para o nome do diretório, e é por isso que == não funciona.

Sugiro um processo de 2 etapas - primeiro faça

dir /s /b directory\*.jar > temp.txt

e então

for /F usebackq %%I in (`findstr /V <excluded path> temp.txt`) do call :addcp %%I

o parâmetro /V para findstr imprime todas as linhas que não correspondem à string que você passa. Você também deve poder usar curingas ou até mesmo expressões regulares para sua exclusão, se realmente precisar.

informação relacionada