Файл 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
Alternativelly как @Appleodity уже предложил переименовать commands.txt в commands.bat и использовать его как:
commands.bat | plink -load test
Снова, может быть, вот так (после перемещения pause из commands.bat):
commands.bat | plink -load test
pause >nul 2>&1