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
这不是我正在做的全部工作。我已经蒸馏... 我确定这里有一些小而愚蠢的东西我没有考虑到,我只是没有看到它。
谁能告诉我为什么我可以成功执行以下 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