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

1

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

FOR / r diretório %% F IN (* .jar) DO chamar: addcp %% F

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

Alterar as linguagens de script infelizmente não é uma opção e iterar todos os subdiretórios seria um pesadelo de manutenção. Alguém tem um jeito de fazer isso?

Eu tentei algo como:

FOR / r diretório %% F IN ( * .jar) DO IF %% F == * string * DO chamada: addcp %% F

mas não funcionou.

    
por Keith 13.07.2009 / 21:44

3 respostas

3

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 bater isso em submissão para o que você 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
    
por 13.07.2009 / 21:59
0

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

    
por 13.07.2009 / 22:05
0

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

Eu sugiro um processo de 2 etapas - primeiro faça

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

e depois

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 coincidam com a string que você passa. Você deve ser capaz de usar curingas ou expressões regulares para sua exclusão também, se você realmente precisar.

    
por 13.07.2009 / 22:53