Eri*_*son 1 windows batch-file wmic
希望编写一个脚本来查询 wmic 计算机系统获取模型,如果该值是 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
Run Code Online (Sandbox Code Playgroud)
我通常对脚本编写没问题,但从未使用过 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%]
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
其中条件执行操作用于确定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
Run Code Online (Sandbox Code Playgroud)
或者
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
)
)
Run Code Online (Sandbox Code Playgroud)
或者
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
)
)
Run Code Online (Sandbox Code Playgroud)
或任何其他更适合您的代码的组合/样式,但您必须考虑括号的位置很重要。左括号if需要与命令位于同一行if。右if括号需要与子句(如果存在)位于同一行else。左else括号需要与子句在同一行else。
| 归档时间: |
|
| 查看次数: |
7132 次 |
| 最近记录: |