Você estava pensando corretamente: os curingas ( *
) não são suportados.
Uma boa solução para o problema é findstr
, embora seja necessário recuperar o resultado via %ERRORLEVEL%
e acho que você deve armazená-lo em cache por meio de outra variável (para que o próximo if
não substitua seu valor):
echo %%A | findstr /C:"obj"
set obj_errorlevel=%errorlevel%
if "%%~xA"==".cs" if "%obj_errorlevel%"=="1" echo %%A
... mas isso é um caminho difícil.
Uma maneira ainda mais fácil é adicionar a condição ao comando de origem (o que está dentro de if
), adicionando outro estágio de pipe: ^| find /V "obj"
:
for /F "usebackq delims=" %%A in ('cleartool ls -rec ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->" ^| find /V "obj"')