【发布时间】:2018-05-04 20:42:35
【问题描述】:
我有一个类似于Windows Batch : query wmic computersystem get model if equals true continue with windows batch的问题
我有一个使用 wmic 获取系统型号的批处理文件,需要根据型号运行脚本
这是我的脚本
REM @echo off
setlocal enableextensions disabledelayedexpansion
for /f "tokens=2 delims==" %%a in (
'wmic computersystem get model /value'
) do for /f "delims=" %%b in ("%%~a") do for %%m in (
"HP t520 Flexible Series TC" "HP t610 WW Thin Client" "HP t620 Quad Core TC" "HP t630 Thin Client"
) do if /i "%%~b"=="%%~m" (
set "model=%%~m"
goto start
)
echo un-compatible system
goto :eof
:start
echo Start of script for model [%model%]
if [%model%]==[t520] start "" "C:\SWSetup\APP\Scripts\t520.bat" "C:\SWSetup\APP\Scripts\t520-wmi.bat"
if [%model%]==[t610] start "" "C:\SWSetup\APP\Scripts\t610.bat" "C:\SWSetup\APP\Scripts\t610-wmi.bat"
if [%model%]==[t620] start "" "C:\SWSetup\APP\Scripts\t620.bat" "C:\SWSetup\APP\Scripts\t620-wmi.bat"
if [%model%]==[t630] start "" "C:\SWSetup\APP\Scripts\t630.bat" "C:\SWSetup\APP\Scripts\t630-wmi.bat"
这里是cmd窗口的输出
C:\SWSetup\APP\Scripts>setlocal enableextensions disabledelayedexpansion
C:\SWSetup\APP\Scripts>for /F "tokens=2 delims==" %a in ('wmic computersystem get model /value') do for /F "delims=" %b in ("%~a") do for %m in ("HP t520 Flexible Series TC" "HP t610 WW Thin Client" "HP t620 Quad Core TC" "HP t630 Thin Client") do if /I "%~b" == "%~m" (set "model=%~m"
goto start
)
") do for %m in ("HP t520 Flexible Series TC" "HP t610 WW Thin Client" "HP t620Quad Core TC" "HP t630 Thin Client") do if /I "%~b" == "%~m" (set "model=%~m"
goto start
)
C:\SWSetup\APP\Scripts>for %m in ("HP t520 Flexible Series TC" "HP t610 WW Thin Client" "HP t620 Quad Core TC" "HP t630 Thin Client") do if /I "HP t520 Flexible Series TC" == "%~m" (set "model=%~m"
goto start
)
C:\SWSetup\APP\Scripts>if /I "HP t520 Flexible Series TC" == "HP t520 Flexible Series TC" (set "model=HP t520 Flexible Series TC"
goto start
)
C:\SWSetup\APP\Scripts>echo Start of script for model [HP t520 Flexible Series TC] Start of script for model [HP t520 Flexible Series TC] t520 was unexpected at this time.
C:\SWSetup\APP\Scripts>if [HP t520 Flexible Series TC]==[t520] start "" "C:\SWSetup\APP\Scripts\t520.bat" "C:\SWSetup\APP\Scripts\t520-wmi.bat"
我在这里错过了什么?
【问题讨论】:
-
很明显,第三个
for循环正在输出一个完整的字符串,而不仅仅是tnnn部分。因此,您需要调整第三个循环或进一步解析%model%或%%m,以相应地对其进行优化。最简单的方法是更改您的if行:if not "%model:t520=%"=="%model%"...。总而言之,整个事情当然可以变得更短、更高效/简洁。
标签: batch-file for-loop if-statement