[英]Windows Batch : query wmic computersystem get model if equals true continue with windows batch
寻找写一个脚本来查询wmic computersystem获取模型,如果该值为true,则继续处理批处理文件(如果不是true的话)echo不兼容的系统正在退出,这就是我到目前为止所拥有的
@echo off
for /F "skip=1" %%? in ('wmic computersystem get model') do "(
if %%?' equ Test' ('goto start') else (
if %%?' equ test1' ('goto start') else (
if %%?' equ test2' ('goto start') else (
if %%?' equ test3' ('goto start') else (
echo un-compatible System Exiting...>nul)))))"
:start
start of script
我通常可以使用脚本,但是从不使用if语句,因此在该语句上有点丢失。
任何帮助将非常欢迎。
@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 (
"model1" "model2" "model3" "model4"
) do if /i "%%~b"=="%%~m" (
set "model=%%~m"
goto start
)
echo un-compatible system
goto :eof
:start
echo Start of script for model [%model%]
for
循环在哪里
%%a
检索模型 %%b
删除返回值中的结尾回车符( wmic
行为) %%m
遍历允许的模型列表 如果任何允许的模型与使用wmic
检索到的模型匹配,则代码跳至开始标签,否则,内部for
循环结束,并且由于找不到匹配项,因此脚本结束。
这可以简化为
>nul (wmic computersystem get model |findstr /i /l /c:"model1" /c:"model2" /c:"model3")||(
echo un-compatible system
goto :eof
)
echo compatible system
使用条件执行操作确定findstr
命令是否无法找到任何模型并取消执行。
当然,您可以使用if /else
的级联,但是语法略有不同
for /f "tokens=2 delims==" %%a in (
'wmic computersystem get model /value'
) do for /f "delims=" %%b in ("%%~a") do (
if /i "%%~b"=="test1" goto start
if /i "%%~b"=="test2" goto start
if /i "%%~b"=="test4" goto start
)
echo un-compatible system
goto :eof
要么
for /f "tokens=2 delims==" %%a in (
'wmic computersystem get model /value'
) do for /f "delims=" %%b in ("%%~a") do (
if /i "%%~b"=="test1" ( goto start
) else if /i "%%~b"=="test2" ( goto start
) else if /i "%%~b"=="test3" ( goto start
) else (
echo un-compatible system
goto :eof
)
)
要么
for /f "tokens=2 delims==" %%a in (
'wmic computersystem get model /value'
) do for /f "delims=" %%b in ("%%~a") do (
if /i "%%~b"=="test1" (
goto start
) else if /i "%%~b"=="test2" (
goto start
) else if /i "%%~b"=="test3" (
goto start
) else (
echo un-compatible system
goto :eof
)
)
或其他更适合您的代码的组合/样式,但是您必须考虑到括号的位置很重要。 if
开头括号必须与if
命令位于同一行。 if
结束括号必须与else
子句(如果存在)在同一行。 else
开头括号必须与else
子句位于同一行。
所有@MC ND解决方案都可以使用。 但是您可以尝试一下。
@echo off
::Defining the supported model
set $test="935gcm-s2c" "45687-98a" "57687-sdf"
for /f "tokens=2 delims==" %%a in ('wmic computersystem get model /value') do set "$Mod=%%a"
for %%a in (%$test%) do if /i %%a=="%$mod%" goto:ok
echo System not suppoprted
exit/b
:ok
echo System supported
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.