2013-03-28 36 views
7

これは、TeamViewerのの位置(任意のバージョン)を取得するために私の文字列で、サービスの実行可能ファイル:それは(Windows 7のコマンドでの)結果の最後に空の行が含まれているためWmic出力から空の行を削除するにはどうしたらいいですか?

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

問題がwmicによって引き起こされ、これは出力です:

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. 

出力の2番目の行だけを実行可能ファイルの正しい位置に取得する方法はありますか。 (または最新の行をスキップしてください)。

ありがとうございました。ありがとうございました。 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 

findstr /r /v "^$"出力から空の行を削除します。このよう

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

+0

と-iが要求 - に追加し、値

余分なライン

トークン化そこから=

フィールド可能になりますどこに "=" >>見つけます完全な文字列をバッチファイルに含めますか?前に何かを指定する必要がありますか? – Giovanni

+0

これをバッチファイルで使いたい場合は、 '%A'を' %% A 'に変更する必要があります。 –

+0

'%AA'で'%A'を変更した場合、バッチは何も生成しません: 'for/f" skip = 1 delims = "%wim path win32_service where '' TeamViewer% "get pathname^| findstr/r/v"^$ "')POSITION = %% Aを設定します。 ' C:\> checkteamviewer.bat C:\> ' – Giovanni

5

wmic blah/value |

出力がDELIM =

+0

良い点。 '/ VALUE'スイッチは' wmic /? 'を実行しているときには文書化されていないようです。 –

関連する問題