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