发送.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.txt
并commands.bat
使用它:
commands.bat | plink -load test
再次,也许是这样(从 移出之后pause
)commands.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.txt
并commands.bat
使用以下命令将输出传送到 plink:
commands.bat | plink -load test