2013-03-28 10 views
7

Questa è la mia stringa per ottenere la posizione di TeamViewer (qualsiasi versione) servizio eseguibile:Come rimuovere le righe vuote dall'output wmic?

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

Il problema è causato da wmic perché include una riga vuota alla fine del risultato (a comando di Windows 7) e questo è il risultato:

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. 

Come posso ottenere solo la seconda linea di uscita con la corretta posizione del file eseguibile? (o saltare l'ultima riga, ovviamente).

Grazie in anticipo e buona giornata. Giovanni.

Questo è 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% 

risposta

9

Così:

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

Il findstr /r /v "^$" rimuove righe vuote dall'output.

+0

E -I aggiungere alla richiesta- può Includo la stringa completa in un file batch? Devo specificare qualcosa prima? – Giovanni

+0

Se si desidera utilizzare questo in un file batch, è necessario modificare '% A' su' %% A'. –

+0

Se cambio '% A' in'% AA' il batch non produce nulla: 'per/f" skip = 1 delim = "%% A in ('percorso wmic win32_service dove" nome come' TeamViewer% ' "get pathname^| findstr/r/v"^$ "') imposta POSITION = %% A' ' C: \> checkteamviewer.bat C: \> ' – Giovanni

5

wmic blah/value | trovare "=" >> ovunque

uscita sarà

campo = valore

linee aggiuntive

tokenize da lì, delim =

+0

Bel punto. L'opzione '/ VALUE' non sembra essere documentata quando si esegue' wmic /? '. –