在Windows批处理循环中使用带变量的引号的不可靠结果

时间:2013-05-23 23:23:49

标签: windows variables for-loop batch-file

我正在运行一个for循环来查看要停止的服务列表,但是我在使用引号时遇到了问题,而且结果也很不寻常。

for /f "tokens=* delims= " %%a in ('wmic service where ^(displayname like "%%tsm%%"^) get name ^| findstr "TSM"') do echo "%%a"

我的结果是:

"Service Name
"Service Name

如果我切换到:

for /f "tokens=* delims= " %%a in ('wmic service where ^(displayname like "%%tsm%%"^) get name ^| findstr "TSM"') do echo ""%%a""

结果是:

""Service Name
""Service Name

而且,如果我切换到:

for /f "tokens=* delims= " %%a in ('wmic service where ^(displayname like "%%tsm%%"^) get name ^| findstr "TSM"') do echo ^"%%a^"

结果:

"Service Name
"Service Name

显然我发现了一些我不理解的事情,因为我根本无法将其结果封装在引号中,因此我可以运行net stop或sc delete等命令。

1 个答案:

答案 0 :(得分:0)

试试这个:

for /f "tokens=* delims= " %%a in ('wmic service where ^(displayname like "%%tsm%%"^) get name ^| findstr "TSM"') do (
for /f "delims=" %%i in ("%%a") do echo "%%i"
)

这是由于wmic(CRLFCR)的“行尾”符号。