2013-03-28 13 views
7

To jest mój ciąg, aby uzyskać pozycję TeamViewer (dowolna wersja) wykonywalnego usługi:Jak mogę usunąć puste wiersze z pliku wmic?

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

Problem jest spowodowany przez wmic ponieważ zawiera pustą linię na końcu wyniku (na Windows 7 poleceń) i to jest wyjście:

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. 

Jak mogę uzyskać tylko drugi wiersz wyjścia z poprawną pozycją pliku wykonywalnego? (lub oczywiście pominąć najnowszą linię).

Dziękuję wszystkim z góry i życzę miłego dnia. Giovanni.

To 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% 

Odpowiedz

9

Jak to:

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 "^$" usuwa pustych linii na wyjściu.

+0

I -I dodać do request- puszka Dołączam cały ciąg do pliku wsadowego? Muszę coś wcześniej określić? – Giovanni

+0

Jeśli chcesz użyć tego w pliku wsadowym, musisz zmienić "% A" na "%% A". –

+0

Jeśli zmienię "% A" w "% AA" partia nie produkuje niczego: 'for/f" skip = 1 delims = "%% A in ('ścieżka wmic win32_service gdzie" nazwa jak "TeamViewer%" "get pathname^| findstr/r/v"^$ "') ustaw POZYCJĘ = %% A' ' C: \> checkteamviewer.bat C: \> ' – Giovanni

5

wmic blah/value | znaleźć "=" >> gdziekolwiek

wyjście będzie

pole = wartość

żadne dodatkowe linie

tokenize stamtąd delim =

+0

Niezły punkt. Przełącznik '/ VALUE' nie wydaje się być udokumentowany podczas uruchamiania' wmic /? '. –