Variables 如何在批处理文件中设置WMIC变量?

Variables 如何在批处理文件中设置WMIC变量?,variables,batch-file,wmic,Variables,Batch File,Wmic,我创建了这个简单的批处理文件,它设置了两次变量。一次是我正在寻找的答案,然后第二次是空白,这会删除变量 for/f“tokens=1 delims==”%%f在('WMIC产品,其中“名称”如“%%iTunes%%”“获取名称”)中设置“myVar=%%f” 回显%myVar% 它给出了以下结果 C:\Batch>disktest C:\Batch>for/F“tokens=1 delims==%F in('WMIC PRODUCT WHERE'名称,如“%iTun es%“获取名称”)是否设

我创建了这个简单的批处理文件,它设置了两次变量。一次是我正在寻找的答案,然后第二次是空白,这会删除变量

for/f“tokens=1 delims==”%%f在('WMIC产品,其中“名称”如“%%iTunes%%”“获取名称”)中设置“myVar=%%f”
回显%myVar%
它给出了以下结果

C:\Batch>disktest
C:\Batch>for/F“tokens=1 delims==%F in('WMIC PRODUCT WHERE'名称,如“%iTun
es%“获取名称”)是否设置“myVar=%f”
“\Batch>set”myVar=Name
“\Batch>set”myVar=iTunes
“\Batch>set”myVar=
C:\Batch>echo
ECHO正在播放。
C:\Batch>
所以,在某个地方,我没有正确地逃脱,或者我不知道我错过了什么。有人能帮我吗


这是Windows 7x64,但我也希望在XP SP3中使用它。

在对新发现的wmic进行了一些实验后:)我认为您的问题是,默认情况下,它会首先列出您想要的结果以及列的标题,最后是空行

要过滤wmic的结果,请添加
|查找“xxx”
,例如

wmic product where "name like 'xxx'" get name | find "xxx"
这将过滤掉包含标题的行(这就是为什么你在结果中得到“Name”)和最后的空行

事实上,经过进一步思考,您可以完全删除“where”子句,将其替换为“find”,因此:


我也有同样的问题,解决办法是:

wmic nic get name, index

set /p IndexOfAdapter= "What Adapter's index would you select? "

FOR /F "delims==" %%x IN ('WMIC NIC WHERE index^="%IndexOfAdapter%" GET name ^| FIND /V "Name" ^| FIND " "') DO (SET BOOK=%%x)
现在,我得到了要禁用或启用的适配器的名称,并避免使用空答案或名称答案。在第一个查找中,我过滤名称,第二个查找空白。 要测试脚本,请在末尾添加

echo %BOOK%

谢谢@Ian,我选择了你建议的第一个。这就是我现在拥有的
for/f“tokens=1-5 delims=“%%A in('wmic product get name^,version^ | find“iTunes”)请设置“myVar=%%A”
注意,我用来打断管道的“^carrot”和逗号。这是供批量使用的。echo%myVar%还有@Ian,我不能投票支持这个,因为我还没有足够的信誉。但我把它标记为答案。@DanO。不客气:)你现在就上路了。回答一些问题!
echo %BOOK%