send.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に書き込んだコマンドを入力できません。
これらのファイルを同じディレクトリに置きます。
あなたのcommands.txt
ファイルはただの混乱です。
set_zero
コマンドではなくecho set_zero
コマンドを送信することを想定しているので、set_zero
ではなくecho set_zero
をファイルに配置します。
ただし、コマンド間で一時停止する必要がある場合は、timeout
コマンドを使用できないため、単純な入力リダイレクトは役に立ちません。シリアルポートに送信しているときに、ローカルでtimeout
コマンドを実行したい。 plink
の入力を生成するスクリプトとして使用した場合、コードは実際には正しいです。ただし、そのためには、|
ではなく<
を使用する必要があります。
これはあなたが望むことをするかもしれません:
(
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
ドキュメントによると、正しい使用法は次のとおりです。
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