批处理/ cmd for循环语法错误

这不是我所做的全部范围。 我已经提炼出来了……我敢肯定,在这里我没有考虑到一些细小而愚蠢的东西,我只是看不到它而已。

有人可以告诉我为什么我可以成功地执行下面的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 

而不是configuration文件信息,在for循环它吐出这个错误消息:

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

我错过了什么? 上下文是否改变了括号(如用户)? 有一个字符逃生问题?

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

其中一些是通常的&| 对解析器有特殊的意义似乎显然需要大幅度的提高。 另一个有问题的字符是右括号( ) ),可以将其看作for命令的in子句的右括号。

但是一些字符(例如, ; )需要转义,因为它们被看作是分隔符并被删除。 在你的情况=产生的问题

您可以使用

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