2017-03-03 67 views
1

我有一个简单的脚本,抓住个人电脑制造商,并设置一个变量列表中的任何项目匹配:批次 - 检查变量

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

我下一步需要做的是检查,如果我的新如果没有找到

Acer 
Gateway 
Packard 
Alienware 
ASUS 
Dell Inc. 
Fujitsu 
HP 
Compaq 
Lenovo 
IBM 
Samsung 
Sony 
Toshiba 

然后发现DO COMMAND1如果和DOCOMMANDBVENDOR变量列表中的任何匹配。

我认为管道变量为findstr可能会工作,但我只知道findstr用法时,你喂它一个文本文件。在正则表达式中我真的很糟糕,所以如果这是最好的选择,我需要一些指导。

我该如何完成上述操作?

回答

2

略有不同的方法。您也可以将所有供应商放在列表中,并用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 

如果您想阅读每个条目在自己的行上的列表。

FOR /F "usebackq delims=" %%G IN ("filelist.txt") DO IF....... 
2

如果管卖方findstr /I /G:Vendorlist.txt和使用成功失败条件执行&&||

@Echo off 
for /f "tokens=2 delims==" %%A IN (
    'wmic csproduct get VENDOR /value' 
) DO Set VENDOR=%%A 
Echo:%VENDOR%|Findstr /I /G:VENDORList.txt >NUL 2>&1 &&(
    Echo found %VENDOR% in List 
)||(
    Echo %VENDOR% not found in list 
) 
+0

+1这很干净。我不想使用帮助程序文件,但这样做的结果与接受的答案一样。谢谢 – Moses