for %%f in ('wmic service where 'name like 'Steam Client%%'") do set Service=%%f
echo %Service%
我在做什麼錯了? ?變量中WMIC命令的輸出
for %%f in ('wmic service where 'name like 'Steam Client%%'") do set Service=%%f
echo %Service%
我在做什麼錯了? ?變量中WMIC命令的輸出
這是我想做到這一點額外的濾波輸出。
第二個for循環僅更快從輸出剝去一些問題的字符,多以同樣的方式作爲FindStr
例子。然後,我實現了一個Call
來去除填充返回的Get
字符串末尾的尾部空格。
@Echo Off
For /F "Skip=1 Delims=" %%A In (
'"WMIC Service Where (Name Like 'Steam%%') Get Name"'
) Do For /F "Delims=" %%B In ("%%A") Do Call :Sub %%B
Echo("%Service%"
Timeout -1
GoTo :EOF
:Sub
Set "Service=%*"
GoTo :EOF
上面的代碼是完全未測試如我使用的機器人裝置。
這更像它:D:D –
是不是在('wmic service where 'name like 'Steam Client%%'")
最後的支架應該是「不」在任何情況下,我從來沒有嘗試過使用WMIC服務,只有這個樣子WMIC win32_localtime:FOR /F %%F IN ('wmic path win32_localtime get dayofweek^|Findstr [0-6]') DO SET DOW=%%F
編輯:我注意到幾個至少在我能理解的地方,如果你希望通過FOR語句來評估代碼的輸出,你需要在FOR和變量之前的/ F infront。你通常也需要使用單引號(')開始和結束包含該命令的括號。如下所示:for /f %%f in ('wmic service where name like "Steam Client%%"') do set Service=%%f echo %Service%
對於任何有關WMIC查詢的幫助this可能會幫助
希望這有助於。
我希望批處理文件找到服務的名稱並將其顯示在屏幕上。感謝你的快速回復。 –
您是否注意到此答案的第一個相關部分?你應該在括號內使用命令的地方需要用單引號(')結束(並開始)。然後是第二部分,我在那裏展示了我爲了使用命令而執行的命令。如果在語句中使用命令,則需要在FOR前加上/ F。 – Elven
for /F "tokens=*" %%f in ('wmic service where "name like "Steam%%"" get Name ^| findstr /V /R "^$"') do set Service=%%f
echo %SERVICE%
輸出
Steam Client Service
誤區代碼:
/F
開關與環get
條款findstr
非常感謝。它工作:) –
這出「蒸汽客戶服務」給我尾隨空格。像 「Steam客戶端服務(空格)」 –
http://stackoverflow.com/questions/3001999/how-to-remove-trailing-and-leading-whitespace-for-user-provided-input-in-a-batch – abelenky
什麼是輸出的,什麼是您的期望? –
我正在尋找批處理文件來返回我的服務名稱,它會問我是否停止/啓動服務。 –