windows - Windows CMD - 查找 COM 端口的当前波特率
问题描述
我正在尝试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%
推荐阅读
- sequelize.js - 使用列值续集关联范围
- python - 未找到:/style.css/,django
- linux - 我正在尝试从文件中读取内容,但没有得到准确的输出
- c# - UWP 在设置中存储和加载视频编码属性
- flutter - Flutter - 未处理的异常:在 dispose() 之后调用 setState()
- c# - 有没有办法运行使用操作系统身份验证来运行 RMAN 备份作为 systemd 的 .NET Core 服务?
- c - 整数的用户输入无限循环,直到用户输入字符 (C)
- php - 使用 laravel 查询生成器嵌套选择?
- r - 选择包含值 x 或值 y 的 df
- android - android导航UI组件内存泄漏