批处理文件不适用于所有命令

时间:2014-07-12 15:03:12

标签: batch-file cmd

我创建了一个批处理文件来配置车辆控制器上的几个设置。通常我使用专门构建的程序来完成配置,但在这种情况下,因为有几个配置我想自动化该过程。 所以我使用了超级终端来捕获从专用程序通过串口发送到每个配置的控制器的数据/命令。 然后,我创建了一个批处理文件,其中包含使用超级终端捕获的数据/命令。运行批处理文件时,它应该在车辆控制器上自动执行每个配置。

我发现批处理文件适用于某些配置,但不适用于其他配置。

例如,以下配置确实有效:

以下是我在超级终端中看到的内容。

以下是来自超级终端的日志。

以下是包含来自超级终端日志的数据的批次代码

@echo off
Echo Enter the # for your com port (typically 1)
set /p com=
@echo on
mode COM%com% BAUD=38400 PARITY=N DATA=8
set /p x="¾@gms: 0  /¾@ gms¡" <nul >\\.\COM%com%
timeout /t 1
set /p x="¾@gms: 0  /¾@ gms¡" <nul >\\.\COM%com%
timeout /t 2

pause
exit

这是运行命令后的输出

所以上面的命令效果很好。

但是当我尝试进行以下配置时,它不起作用:

以下是我在超级终端中看到的内容。

以下是来自超级终端的日志。

以下是包含来自超级终端日志的数据的批次代码

@echo off
Echo Enter the # for your com port (typically 1)
set /p com=
@echo on
mode COM%com% BAUD=38400 PARITY=N DATA=8
set /p x="¾@swav: 1«¾@ swav" <nul >\\.\COM%com%
timeout /t 1
set /p x="¾@swav: 1«¾@ swav" <nul >\\.\COM%com%
timeout /t 2

pause
exit

这是运行命令后的输出

您可以在超级终端屏幕截图中看到数据正在开始新行。我认为它在批处理文件命令中做了同样的事情,结果它弄乱了命令。 有没有办法可以调整我的批处理命令来补偿&#34;配置命令&#34;开始新的一线?


我现在尝试了基于@foxidrive评论的以下代码:

@Echo Enter the # for your com port (typically 1)
set /p com=
mode COM%com% BAUD=38400 PARITY=N DATA=8
set /p "x=¾@swav: 1«¾@ swav"<nul >COM%com%
timeout /t 1
set /p "x=¾@swav: 1«¾@ swav"<nul >COM%com%
timeout /t 2

pause
exit

我得到以下输出:

Enter the # for your com port (typically 1)
1

Status for device COM1:
-----------------------
    Baud:            38400
    Parity:          None
    Data Bits:       8
    Stop Bits:       1
    Timeout:         ON
    XON/XOFF:        OFF
    CTS handshaking: OFF
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:     ON
    RTS circuit:     HANDSHAKE

►¥@¶☺swav: 1

因此命令仍未正确完成。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

set / p对它可以使用的字符集有一些限制 这样做你需要的吗?

@echo off
Echo Enter the # for your com port (typically 1)
set /p com=
mode COM%com% BAUD=38400 PARITY=N DATA=8
set /p "x=¾@gms: 0  /¾@ gms¡"<nul >COM%com%
timeout /t 1
set /p "x=¾@gms: 0  /¾@ gms¡"<nul >COM%com%
timeout /t 2

pause
exit

答案 1 :(得分:0)

如果foxidrives答案不起作用(通常他们这样做),您可以通过将数据复制到文件来解决set /p限制,而不是使用set /p来写:

copy /b config1.bin>COM%com%: