批处理/ cmd用于循环语法错误



这不是我正在做的全部范围。 我已经蒸馏下来了... 我敢肯定,我在这里没有解释一些微小而愚蠢的东西,我只是没有看到它。

有人可以告诉我为什么我可以成功执行以下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 循环中,它会吐出以下错误消息:

系统上没有这样的无线接口。

我错过了什么?括号中的上下文是否更改(如用户(? 是否存在角色转义问题?

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

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

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

您可以使用

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

最新更新