2014-10-16 138 views
1

我创建了这个简单的批处理文件,它设置了两次变量。一旦找到了我正在寻找的答案,然后是第二次删除变量的空白。如何在批处理文件中设置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中使用它。

回答

1

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

过滤从WMIC的结果,添加| FIND "xxx",例如,

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

这将过滤掉包含标题行(这就是为什么你在你的成绩获得“姓名”)和最终空行。

事实上,在进一步思考,你可以完全删除“其中”条款,与“发现”替换它,所以:

wmic product get name | find "xxx" 
+0

感谢@Ian添加,我就跟着你建议的第一个。这是我现在拥有的。 'for/f“tokens = 1-5 delims =”%% A in('wmic product get name ^,version^| find“iTunes”')do set“myVar = %% A”'NOTE the^carrot我曾经打破了管道|和逗号。这用于批量使用。 echo%myVar% – 2014-10-17 00:35:28

+0

另外@伊恩,我不能投票,因为我还没有足够的信用。但我将其标记为答案。 – 2014-10-17 00:41:21

+0

@DanO。不客气:)你现在在路上。回答一些问题! – Ian 2014-10-17 10:27:49

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 I过滤名称,第二次过滤空白。
要测试脚本,在最后

echo %BOOK% 
相关问题