一段時間以來,我一直在為這個問題撓頭。我試圖做的是將自動檢測添加到我的計算機診斷批處理腳本中,以便我可以制作特定于筆記本電腦或臺式機設備的腳本,這些腳本根據設備型別自動執行。我認為可以使用兩個命令來檢測這一點。
wmic systemenclosure get chassistypes
和
powercfg /batteryreport
不幸的是,我似乎無法將這些命令中的任何一個的輸出決議為我可以實際使用的變數。本指南是我試圖遵循的內容,但是我遇到了wmic和powercfg 的問題,wmic輸出無法按鏈接指南中的示例進行過濾,而powercfg只是拒絕合作。這是許多不起作用的組合之一
for /f %%i in ('powercfg /batteryreport') do set RESULT=%%i
任何幫助將不勝感激,我希望這是我的問題,而不是批處理的限制。
uj5u.com熱心網友回復:
如果你打開cmd并運行for /?,你會發現有不同的功能,你可以用命令使用,一個是delims=這是你需要的powercfg,由于包含空格的結果:
對于wmic其中之一將執行以下操作:
@echo off
for /f "delims={}" %%i in ('wmic systemenclosure get chassistypes ^| findstr "{"') do @set "chassistype=%%i"`
echo %chassistype%
或者通過使用/VALUE選項并使用標??準輸出設定變數作為變數和值:
@echo off
for /f "delims=" %%i in ('wmic systemenclosure get chassistypes /VALUE ^| findstr "{"') do set "%%i"`
echo %chassisTypes%
和 powercfg
@echo off
for /f "delims=" %i in ('powercfg /batteryreport') do set "result=%%i"
echo %result%
顯然,您可以使用上述所有命令,而無需set通過簡單的echoing命令來執行。
uj5u.com熱心網友回復:
雖然您收到了您似乎滿意的答案,但我決定發布另一種方法。我不確定您是否知道,但可能有幾個結果可以確定為 aDesktop或 a Laptop,因此強大的腳本將對每個結果執行檢查。
這個 批處理檔案 版本利用 電源外殼, 代替 微信, 決議結果。它隨后分配術語Desktop,或分配給Laptop我認為適合每個術語的術語:
@Echo Off
SetLocal EnableExtensions
Set "Type=" & For /F EOL^=- %%G In ('
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -Command
"(Get-CimInstance -Query 'Select * From CIM_Chassis').ChassisTypes"^
" | Select-Object -Property @{ Label = '-'; Expression = { Switch ($_) {"^
" { '3', '4', '5', '6', '7', '15', '16' -Eq $_ } { 'Desktop' };"^
" { '8', '9', '10', '11', '12', '14', '18', '21' -Eq $_ } { 'Laptop' };"^
" default { '' } } } }" 2^>NUL') Do Set "Type=%%G"
If Not Defined Type GoTo :EOF
Set Type & Pause
包含最后一行只是為了向您顯示變數名稱及其擴展值,您可以隨意將其替換為您自己的代碼(%Type%根據需要使用)。如果腳本沒有暫停,即只是退出,則您的ChassisTypes輸出未確定為 aDesktop或 a Laptop。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/360576.html
