Se eu entendi direito o que você tenta realizar, esse lote funcionará:
@Echo off
For /f "skip=1 tokens=1,2 delims=," %%A in (
'WMIC.exe /Namespace:\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:csv^|find "," '
) Do For /f "delims=" %%C in ("%%B") Do Find /I "%%A,%%C" "%%C.txt" >NUL 2>&1 ||(>> "%%C.txt" Echo:%%A,%%C)
For /f "skip=1 tokens=1,2 delims=," %%A in (
'WMIC.exe /Namespace:\root\SecurityCenter2 Path AntiSpywareProduct Get displayName /Format:csv^|find ","'
) Do For /f "delims=" %%C in ("%%B") Do Find /I "%%A,%%C" "%%C.txt" >NUL 2>&1 ||(>> "%%C.txt" Echo:%%A,%%C)
- Não há necessidade de arquivos temporários e classificação,
- analisando diretamente a saída wmic com
for /f
e -
skip=1
para se livrar do cabeçalho, -
tokens=1,2 delims=,"
para dividir as linhas e armazenarnode
para%%A
edisplayname
para%%B
-
find
para verificar se a entrada já está presente no arquivo de destino.
EDIT3 Lote fixo, deve funcionar agora.