Batch file 在cmd中运行的命令产生的输出与在for循环中解析命令时不同

Batch file 在cmd中运行的命令产生的输出与在for循环中解析命令时不同,batch-file,for-loop,Batch File,For Loop,我正在尝试使用for/f循环访问我的网络安全密钥。我用于获取它的命令(在cmd中)如下所示: netsh wlan show profiles name=“NETWORK name”key=clear 我认为这并不重要,但网络名称包括两个用空格分隔的单词 我对此做了几次尝试: 1.尝试用一种简单的方法解析它: 对于('netsh wlan show profiles name=“NETWORK name”key=clear^ | findstr/c:“key content”')中的/f“to

我正在尝试使用
for/f
循环访问我的网络安全密钥。我用于获取它的命令(在cmd中)如下所示:

netsh wlan show profiles name=“NETWORK name”key=clear
我认为这并不重要,但网络名称包括两个用空格分隔的单词

我对此做了几次尝试:

1.尝试用一种简单的方法解析它:

对于('netsh wlan show profiles name=“NETWORK name”key=clear^ | findstr/c:“key content”')中的/f“tokens=4”%%A,不回显%%A
这个没有输出,所以我尝试:

对于('netsh wlan show profiles name=“NETWORK name”key=clear')中的/f“tokens=4”%%A,执行echo%%A
这让我看到:

参数
[[name=]]
属于
属于
陈列
数据
界面
是
轮廓
是
上市的
将
设置
是
是
偏爱
1"
2"
3"
带有
delims=
选项的是:

命令的一个或多个参数不正确或缺失。
用法:显示配置文件[[name=][interface=][key=]
参数:
标记值
name—要显示的配置文件的名称。
interface—配置了此配置文件的接口的名称。
键-要以纯文本显示键,请设置键=清除。
评论:
显示配置文件数据或列出系统上的配置文件。
参数名和接口都是可选的。
如果提供了配置文件名称,则配置文件的内容将
显示。否则,仅列出配置文件名称和说明。
如果给定了接口名称,则仅在给定的
接口将被列出。否则,将列出具有给定名称的所有配置文件
将列出系统上的。
如果密钥设置为“清除”,且调用方为本地管理员,
该键将以纯文本显示。
组策略配置文件为只读。用户配置文件可读且
可写,并且可以更改首选项顺序。
示例:
显示配置文件名称=“配置文件1”接口=“无线网络连接”
显示配置文件名称=“配置文件2”
显示配置文件名称=“配置文件3”键=清除
显示个人资料
2.使用
usebackq

for/f“usebackq delims=”%%A IN(`netsh wlan show profiles name=“NETWORK name”key=clear`)do echo%%A
与上面相同的输出

3.将网络名称设置为引用的变量:

set network=“网络名称”
对于/f“delims=“%%A IN('netsh wlan show profiles name=%network%key=clear'),执行echo%%A
即使使用
usebackq
,输出也与上述相同

4.将网络名称设置为未加引号的变量:

set network=网络名称
对于('netsh wlan show profiles name=“%network%”key=clear')中的/f“delims=”%%A,执行echo%%A
与上面相同的输出,即使使用
usebackq


我在这里遗漏了什么?

你必须摆脱一些特殊的角色。
=
就是其中之一:

for /f "delims=" %%A IN ('netsh wlan show profiles name^="NETWORK NAME" key^=clear') do echo %%A

其他必须转义的字符有:
|&,

有毒字符不太正确。最好由Windows命令处理器将字符解释为参数分隔符。@Mofi…和有毒字符。
:)
。我更改了措辞。(如果它是“参数分隔符”,空格也必须转义)@Stephan空格不能转义,因为
cmd.exe
替换了字符逗号
、分号
、等号
=
和无换行符(OEM编码为代码值255十进制)在未使用插入符号转义时或在执行命令之前位于双引号参数字符串内时,由普通空格字符解释为参数分隔符。这可以在运行批处理文件时看到,命令行为/F%%I in('pause a!BC#D$E+F,G-H.I/J:K;L=M?N@O[P] Q`R{S}T~U V')在输出为a!BC#D$E+F G-H.I/J:K L M的cmd窗口中是否回显%%I?N@O[P] Q`R{S}T~uv。