批处理 - 检查变量是否与列表中的任何项目匹配

5 batch-file match

我有一个简单的脚本,可以获取 PC 制造商并设置一个变量:

for /f "usebackq tokens=2 delims==" %%A IN (`wmic csproduct get vendor /value`) DO SET VENDOR=%%A
Run Code Online (Sandbox Code Playgroud)

接下来我需要做的是检查我的新VENDOR变量是否与列表中的任何内容匹配:

Acer
Gateway 
Packard 
Alienware
ASUS
Dell Inc.
Fujitsu
HP
Compaq
Lenovo
IBM
Samsung
Sony
Toshiba
Run Code Online (Sandbox Code Playgroud)

然后DO COMMAND1如果找到,DOCOMMANDB如果没有找到。

我认为将变量通过管道输入findstr可能会起作用,但我只知道findstr当您向其提供文本文件时的用法。我真的不擅长正则表达式,所以如果这是最好的选择,我需要一些指导。

我怎样才能实现上述目标?

Squ*_*man 4

方法略有不同。您还可以将所有供应商放入列表中并使用 FOR /F 读取该列表。

@echo off
for /f "usebackq tokens=2 delims==" %%A IN (`wmic csproduct get vendor /value`) DO SET VENDOR=%%A

FOR %%G IN ("Acer"
            "Gateway"
            "Packard"
            "Alienware"
            "ASUS"
            "Dell Inc."
            "Fujitsu"
            "HP"
            "Compaq"
            "Lenovo"
            "IBM"
            "Samsung"
            "Sony"
            "Toshiba") DO (
            IF /I "%vendor%"=="%%~G" GOTO MATCH
)

:NOMATCH
echo Does not match
pause
GOTO :EOF

:MATCH
echo Does match
pause
GOTO :EOF
Run Code Online (Sandbox Code Playgroud)

如果您想阅读每个条目独占一行的列表。

FOR /F "usebackq delims=" %%G IN ("filelist.txt") DO IF.......
Run Code Online (Sandbox Code Playgroud)