How can I remove empty lines from wmic output?

2019-03-27 11:03发布

问题:

This is my string to obtain the position of TeamViewer (any version) service executable:

for /f "skip=1 delims=" %A in ('wmic path win32_service where "name like 'TeamViewer%'" get pathname') do set POSITION=%A

The problem is caused by wmic because it includes an empty line at the end of result (on Windows 7 command) and this is the output:

C:\Users\giovanni>for /f "skip=1 delims=" %A in ('wmic path win32_service where "name like 'TeamViewer%
'" get pathname') do set POSITION=%A

 :\Users\giovanni>set POSITION="C:\Program Files\TeamViewer\Version8\TeamViewer_Service.exe"

 :\Users\giovanni>set POSITION=

C:\Users\giovanni>echo %position%
ECHO enabled.

How I can get only the second line of the output with the correct position of the executable? (or skip the latest line, of course).

Thanks all in advance and have a nice day. Giovanni.

This is checktv.bat:

for /f "skip=1 delims=" %%A in ('wmic path win32_service where "name like 'TeamViewer%'" get pathname ^| findstr /r /v "^$"') do set POSITION=%%A
echo %POSITION%

回答1:

Like this:

for /f "skip=1 delims=" %A in (
  'wmic path win32_service where "name like 'TeamViewer%'" get pathname ^| findstr /r /v "^$"'
) do set POSITION=%A

The findstr /r /v "^$" removes empty lines from the output.



回答2:

wmic blah /value | find "=" >> wherever

output will be

field=value

no extra lines

tokenize from there, delim =