Windows CMD - 查找 COM 端口的当前波特率

Windows CMD - Find current baud rate of COM port

我正在尝试在命令提示符下解析 MODE 命令的输出并将其分配给一个变量。 mode的输出如下所示,

PS C:\Users\test> 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 HKLM\HARDWARE\DEVICEMAP\SERIALCOMM'
) do set "COMPORT=%%a" 
echo %COMPORT%

for /f "tokens=2" %%a in (
    'MODE %COMPORT% | FIND /I "Baud"'
) do set "SPEED=%%a" 
echo %SPEED%

但这不起作用,我做错了什么?

尽管我仍然不知道为什么相同的命令在普通控制台中有效但在 powershell 控制台中无效,但脚本的问题完全出在不同的地方。在 for 循环中,您需要转义 | 字符。真正的问题不是 FIND 命令的 Parameter format not correct 错误(误报),而是 |

所需的转义

更正后的脚本如下所示。

@echo off
for /f "tokens=3" %%a in (
    'REG QUERY HKLM\HARDWARE\DEVICEMAP\SERIALCOMM'
) do set "COMPORT=%%a" 
echo %COMPORT%

for /f "tokens=2" %%a in (
    'MODE %COMPORT% ^| FIND /I "Baud"'
) do set "SPEED=%%a" 
echo %SPEED%