您需要将 psftp 脚本(从opento的行bye)存储到一个单独的文件中,并将其传递给psftp使用-bswitch:
cd "C:\Program Files (x86)\PuTTY"
psftp -b "C:\path\to\script\script.txt"
参考:
https ://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter6.html#psftp-option-b
编辑:对于用户名+密码:由于您不能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
你在 atm 做的是你在psftp没有任何参数或命令的情况下运行。一旦你退出它(比如通过键入bye),你的批处理文件会继续尝试运行open命令(和其他命令),这显然是 Windows shell 不理解的。
如果您真的想将所有内容保存在一个文件(批处理文件)中,您可以将命令写入 psftp 标准输入,例如:
(
echo cd ...
echo lcd ...
echo put log.sh
) | psftp <user>@<IP> -pw <PW>
虽然这有副作用。例如,如果主机不知道 plink(例如,如果您第一次在新机器上或在另一个本地帐户下运行它,例如在任务计划程序下),则第一行输入将作为对主机的响应键提示。y除//i之外的任何内容都Enter被解释为n(仅连接一次,不将密钥添加到缓存中),因此即使是cd命令。并且脚本的其余部分将失败,因为cd不会发生。