我试图在命令提示符下解析MODE
命令的输出,并将其分配给一个变量。mode
的输出如下图所示,
PS C:Userstest> mode %COMPORT%
Status for device COM5:
-----------------------
Baud: 9600
Parity: None
Data Bits: 8
Stop Bits: 1
Timeout: OFF
XON/XOFF: OFF
CTS handshaking: OFF
DSR handshaking: OFF
DSR sensitivity: OFF
DTR circuit: OFF
RTS circuit: OFF
我正在尝试使用FIND
获得第一行,如下所示,
mode COM5 | find /I "Baud"
上面写着FIND: Parameter format not correct
顺便说一句,这就是整个代码的样子,
@echo off
for /f "tokens=3" %%a in (
'REG QUERY HKLMHARDWAREDEVICEMAPSERIALCOMM'
) do set "COMPORT=%%a"
echo %COMPORT%
for /f "tokens=2" %%a in (
'MODE %COMPORT% | FIND /I "Baud"'
) do set "SPEED=%%a"
echo %SPEED%
但这不起作用,我做错了什么?
Event尽管我仍然不知道为什么同一命令在普通控制台中有效,但在powershell控制台中无效,但脚本的问题完全不同。在for
循环中,您需要转义|
字符。真正的问题不是FIND
命令的Parameter format not correct
错误(误报(,而是|
所需的逃逸
更正后的脚本如下所示。
@echo off
for /f "tokens=3" %%a in (
'REG QUERY HKLMHARDWAREDEVICEMAPSERIALCOMM'
) do set "COMPORT=%%a"
echo %COMPORT%
for /f "tokens=2" %%a in (
'MODE %COMPORT% ^| FIND /I "Baud"'
) do set "SPEED=%%a"
echo %SPEED%