循环语法错误的批/ cmd
问题描述:
这不是我正在做的全部范围。我已经蒸馏了... 我敢肯定,有一些小事和愚蠢我没有在这里解释,我只是没有看到它。循环语法错误的批/ cmd
有人能告诉我为什么我可以成功执行以下命令netsh
:
netsh wlan show profile name="SomeWifi"
然而,它在一个失败的循环?
for /F "tokens=1,2 delims=:" %a in ('netsh wlan show profile name="SomeWifi"') do echo %a
取而代之的个人资料信息,在for循环就吐出了此错误消息:
没有在系统上没有这样的无线接口。
我错过了什么?上下文是否改变了括号(如用户)?是否有一个字符转义问题?
答
直接在for /f
命令中使用时,需要转义一些字符(使用^
作为前缀)。
其中一些是平时&
和|
,有一个特殊意义的解析器似乎明显需要scaping。另一个有问题的字符是右括号()
),可看作for
命令的in
子句的右括号。
但是一些字符(例如,
,;
)仅仅因为它们被看作分隔符并被删除而需要转义。你的情况=
产生问题
您可以使用
for /F "tokens=1,2 delims=:" %a in ('netsh wlan show profile name^="SomeWifi"') do echo %a
'='被作为分隔符来处理和丢弃。使用'name^=“SomeWifi”转义它'' –
就是这样!真棒。发布这个答案,我会接受它。 – BuvinJ