Batch / cmd for 循环语法错误

Batch / cmd for loop syntax mistake

这不是我正在做的全部工作。我已经蒸馏... 我确定这里有一些小而愚蠢的东西我没有考虑到,我只是没有看到它。

谁能告诉我为什么我可以成功执行以下 netsh 命令:

netsh wlan show profile name="SomeWifi"

然而,它在 for 循环中失败了?

for /F "tokens=1,2 delims=:" %a in ('netsh wlan show profile name="SomeWifi"') do echo %a

在 for 循环中它吐出此错误消息,而不是配置文件信息:

There is no such wireless interface on the system.

我错过了什么?括号中的上下文是否发生了变化(如用户)?是否存在字符转义问题?

有些字符直接用在for /f命令中需要转义(使用^作为前缀)。

其中一些是常见的 &|,对解析器有特殊意义,显然 需要转义。另一个有问题的字符是右括号 ()),它可以看作是 for 命令的 in 子句的右括号。

但是有些字符(例如 ,;)需要转义,因为它们被视为分隔符并被删除。在您的情况下 = 会产生问题

您可以使用

for /F "tokens=1,2 delims=:" %a in ('netsh wlan show profile name^="SomeWifi"') do echo %a