Ответ 1
Вам нужно сохранить psftp script (строки от open
до bye
) в отдельный файл и передать его psftp
с помощью -b
:
cd "C:\Program Files (x86)\PuTTY"
psftp -b script.txt
Где script.txt
предполагается, что оно находится в C:\Program Files (x86)\PuTTY
. Альтернативно укажите полный путь (не забудьте указать путь к двойным кавычкам, особенно если он содержит пробелы. Вам лучше сделать это с помощью команды cd
).
Справка:
https://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter6.html#psftp-option-b
EDIT: для имени пользователя и пароля: поскольку вы не можете использовать команды psftp
в пакетном файле, по той же причине вы не можете указать имя пользователя и пароль как команды psftp
. Это вклад в команду open
. Хотя вы можете указать имя пользователя с помощью команды open
(open <user>@<IP>
), вы не можете указать пароль таким образом. Это можно сделать только в командной строке psftp
. Тогда, возможно, более чистое сделать все в командной строке:
cd "C:\Program Files (x86)\PuTTY"
psftp -b script.txt <user>@<IP> -pw <PW>
И удалите строки open
, <user>
и <PW>
из script.txt
.
Справка:
https://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter6.html#psftp-starting
https://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter3.html#using-cmdline-pw
То, что вы делаете, это то, что вы запускаете psftp
без каких-либо параметров или команд. Как только вы выйдете из него (например, набрав bye
), ваш пакетный файл продолжает пытаться запустить команду open
(и другие), что Windows shell явно не понимает.