下面是我試圖運行的命令。我想爲我的SQL Server 2008實例獲取服務名稱我無法獲得在批處理文件中使用WMIC的正確語法
FOR/F「delims ==」%% G IN('wmic service where(displayname like ^「%% sqlserver2008 %% ^」)')DO echo %% G
下面是我試圖運行的命令。我想爲我的SQL Server 2008實例獲取服務名稱我無法獲得在批處理文件中使用WMIC的正確語法
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有一個奇怪的交互 - FORY/F解析的每行都包含最後一個額外的回車。不需要的回車包含在每個FOR/F迭代中。 Yuck :(
一個有效的解決方案是請求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