これが私が実行しようとしているコマンドです。SQL Server 2008 インスタンスのサービス名を取得したかった
FOR /F "delims==" %%G IN ('wmic service where (displayname like ^"%%sqlserver2008%%^")') DO echo %%G
これが私が実行しようとしているコマンドです。SQL Server 2008 インスタンスのサービス名を取得したかった
FOR /F "delims==" %%G IN ('wmic service where (displayname like ^"%%sqlserver2008%%^")') DO echo %%G
最初に正しい WMIC コマンドを取得する必要があり、次にそれを FOR コマンド内で機能させる必要があります。
探している基本的な WMIC コマンドは次のとおりです。
wmic service where "displayName like '%%sqlserver2008%%'" get name
FOR /F にはいくつかの複雑な問題があります。WMIC 出力は Unicode であり、FOR /F との奇妙な相互作用があります。FOR /F が解析するすべての行には、最後に余分なキャリッジ リターンが含まれています。不要なキャリッジ リターンは、各 FOR /F 反復に含まれています。うん:(
効果的な解決策の 1 つは、目的の列以外に不要な列を少なくとも 1 つ追加して、CSV 形式を要求することです。その後、DELIMS と TOKENS を設定して、目的の列を取得できます。あなたの場合、州列は名前の後に表示されるため、適切な候補です。
WMIC /CSV 形式には、先頭に追加のノード列が含まれます。
WMIC /CSV 形式には、SKIP=2 を使用してスキップできる先頭の空白行とヘッダー行が含まれます。
これは、完全に機能する FOR /F ソリューションです。
for /f "skip=2 tokens=2 delims=," %%A in (
'wmic service where "displayName like '%%sqlserver2008%%'" get name^,state /format:csv'
) do echo %%A