繁体   English   中英

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

[英]How can I set a WMIC Variable in a batch file?

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

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中使用它。

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

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

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

这将过滤出包含标题的行(这就是为什么在结果中得到“名称”的原因)和最后一个空白行。

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

wmic product get name | find "xxx"

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

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)

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

echo %BOOK%

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM