使用 PuTTY 通过串行端口执行多个命令,使用 .bat 文件,各个命令之间有延迟

使用 PuTTY 通过串行端口执行多个命令,使用 .bat 文件,各个命令之间有延迟

发送.bat:

plink -load test < commands.txt

(测试是在 Putty 中保存的会话)

在此处输入图片描述

命令.txt

echo set_zero
timeout /t 3 /nobreak >nul 2>&1
pause >nul 2>&1
echo set_a 65535
pause >nul 2>&1
timeout /t 3 /nobreak >nul 2>&1
echo set_a 0
timeout /t 3 /nobreak >nul 2>&1
pause >nul 2>&1

当我运行send.bat时,它可以成功打开putty,但是它无法输入我在commands.txt中写的命令。

在此处输入图片描述

我把这些文件放在同一个目录中。 在此处输入图片描述

答案1

你的commands.txt文件很乱。

我假设您想发送set_zero命令,而不是echo set_zero命令,因此将其放入set_zero文件,而不是echo set_zero

但是,如果您需要在命令之间暂停,那么简单的输入重定向将无济于事,因为您无法使用timeout命令。您想timeout在将命令发送到串行端口时在本地执行命令。如果您将其用作生成输入的脚本,您的代码实际上是正确的。plink但为此,您需要使用|not <

这可能会做你想做的事:

(
    echo set_zero
    timeout /t 3 /nobreak >nul 2>&1
    pause >nul 2>&1
    echo set_a 65535
    pause >nul 2>&1
    timeout /t 3 /nobreak >nul 2>&1
    echo set_a 0
    timeout /t 3 /nobreak >nul 2>&1
    pause >nul 2>&1
) | plink -load test

pause不过,您可能只想在以下之后移动plink

(
    ...
    echo set_a 0
    timeout /t 3 /nobreak >nul 2>&1
) | plink -load test

pause >nul 2>&1

或者,正如 @Appleodity 已经建议的那样,重命名commands.txtcommands.bat使用它:

commands.bat | plink -load test

再次,也许是这样(从 移出之后pausecommands.bat

commands.bat | plink -load test

pause >nul 2>&1

答案2

根据文档,正确的用法是:

plink -load test -m commands.txt

-m= 从文件读取远程命令。

https://www.ssh.com/ssh/putty/putty-manuals/0.68/Chapter7.html#plink-usage

不过,我很怀疑这些命令的用途。文件的内容几乎看起来像是commands.txt另一个批处理文件,您可能希望执行该文件并将输出发送到串行端口。

事实并非如此。的文字内容commands.txt被发送到串行端口,可能会导致所有无效命令错误。

如果您想要执行内容commands.txt并将输出发送到串行端口,您应该重命名commands.txtcommands.bat使用以下命令将输出传送到 plink: commands.bat | plink -load test

相关内容