Ваш 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