Estoy tratando de obtener la salida de WMIC en una variable para poder procesarla aún más.
He hecho un archivo por lotes de prueba para ilustrar el problema:
wmic PROCESS where "commandline like '%%teststr%%'" get Processid,Caption,Commandline
for /F "usebackq" %%R in (`wmic PROCESS where "commandline like '%%teststr%%'" get Processid,Caption,Commandline`) do echo OUTPUT is %%R
Habiendo llamado a este lote obtengo el resultado esperado para la primera línea, pero invalid GET expression
para la segunda.
Dado que la primera línea funciona, creo que hay algo mal con mi cita: ¿alguien podría arrojar una luz sobre esto? Lo comprobé tres veces sintácticamente y todo me parece correcto de acuerdo con esta otra pregunta: salida Wmic en variable
Edit1:% teststr% es solo una cadena para filtrar, podría ser javaw, por ejemplo, buscar ciertas instancias de java.
Edit2: la salida exacta es:
Caption CommandLine ProcessId
javaw.exe "C:\Program Files (x86)\Java\jre1.8.0_91\bin\javaw.exe" -jar "J:\tools\sonst\jEdit\jedit.jar" -reuseview -background -nogui 5152
javaw.exe "C:\Program Files (x86)\Java\jre1.8.0_91\bin\javaw.exe" -jar "J:\tools\sonst\jEdit\jedit.jar" -reuseview -background -nogui 11504
javaw.exe "c:\Program Files (x86)\Java\jdk1.7.0_80\bin\javaw.exe" -jar "j:\tools\online\JBinUp\JBinUp.jar" 16336
WMIC.exe wmic PROCESS where "commandline like '%javaw%'" get Processid,Caption,Commandline 18740
Invalid GET Expression.
cama y desayuno
%%teststr%%
?but ´
al final de tu primer comando? YCommandlin
no está escrito correctamente.wmic PROCESS where "commandline like '%%teststr%%'" get Processid,Caption,Commandline
?Respuestas:
Tengo
invalid GET expression
el segundo comando.Debe escapar de las
,
(comas) en lafor
expresión, utilizando el^
carácter de Escape:Notas:
skip=1
alfor
comando para omitir el encabezado.wmic
salida.findstr
para quitar las líneas en blanco de lawmic
salida, de la siguiente manera:Probar archivo por lotes:
Salida de ejemplo:
Otras lecturas
fuente