2013-03-28 3 views
7

Это моя строка, чтобы получить позицию TeamViewer (любой версии) службы исполняемому:Как удалить пустые строки из wmic-вывода?

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

Проблема вызвана wmic, потому что она включает в себя пустую строку в конце результата (на Windows 7 команд) и это выход:

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. 

Как я могу получить только вторую строку вывода с правильной позицией исполняемого файла? (или, конечно, пропустить последнюю строку).

Спасибо всем заблаговременно и приятный день. Giovanni.

Это 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% 

ответ

9

Как это:

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

findstr /r /v "^$" удаляет пустые строки из вывода.

+0

И -I добавить к request- может Я включаю полную строку в пакетный файл? Мне нужно что-то указать раньше? – Giovanni

+0

Если вы хотите использовать это в пакетном файле, вам нужно изменить '% A' на' %% A'. –

+0

Если я изменяю '% A' в'% AA', пакет ничего не производит: 'for/f 'skip = 1 delims =" %% A in (' wmic path win32_service где "name like 'TeamViewer%' "get pathname^| findstr/r/v"^$ "') установить POSITION = %% A' ' C: \> checkteamviewer.bat C: \> ' – Giovanni

5

wmic blah/value | найти "=" >>, где

выход будет

поле = значение

без дополнительных линий

разметить оттуда, DELIM =

+0

Nice point. Переключатель '/ VALUE', похоже, не документируется при запуске' wmic /? '. –

Смежные вопросы