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

时间:2014-10-16 12:34:10

标签: variables batch-file wmic

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

for /f "tokens=1 delims==" %%f in ('WMIC PRODUCT WHERE "Name like "%%iTunes%%"" get name') do set "myVar=%%f"
echo %myVar%

它给出了以下结果。

C:\Batch>disktest

C:\Batch>for /F "tokens=1 delims==" %f in ('WMIC PRODUCT WHERE "Name like "%iTun
es%"" get name') do set "myVar=%f"

" \Batch>set "myVar=Name

" \Batch>set "myVar=iTunes

" \Batch>set "myVar=

C:\Batch>echo
ECHO is on.

C:\Batch>

所以某个地方我没有正确地逃避^或者我不知道我错过了什么。任何人都可以帮助我吗?

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

2 个答案:

答案 0 :(得分:1)

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

要过滤wmic的结果,请添加| FIND "xxx",例如

wmic product where "name like 'xxx'" get name | find "xxx"

这将过滤掉包含标题的行(这就是您在结果中获得“名称”的原因)和最后一个空行。

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

wmic product get name | find "xxx"

答案 1 :(得分:0)

我有同样的问题,解决方案是:

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)

现在我得到了我要禁用或启用的适配器的名称,并避免了空答案或名称答案。使用第一个FIND我过滤名称,第二个过滤空白 要测试脚本,请在末尾添加

echo %BOOK%