我创建了一个 bat 文件来将文件从 PC 传输到服务器,手动输入命令时一切正常,但我不知道如何在脚本中转换,因为它会在输入密码请求后停止
cd c:\users\user\documents\transfer
sftp [email protected]
put *.txt
问题是,当系统要求输入密码时,我输入密码,但它会停止,我需要记下脚本的其余部分
有什么办法可以让脚本在输入密码后继续运行吗?
答案1
密码不是问题,问题在于脚本不会模仿键盘输入。它们以串行方式运行命令,就脚本而言,命令sftp
是仍在运行– 它显示了自己的输入提示,但脚本无法利用它做任何事情。只有当“sftp”退出时,命令put
才会在主 Cmd.exe 解释器中执行,而不是在 sftp 中执行。
使用该
sftp -b
选项将单独的脚本传递给“sftp”程序。cd/d c:\users\user\documents\transfer sftp -b c:\whatever\putall.txt [email protected]
使用
scp
命令。(在最新的 OpenSSH 版本中,它甚至是基于 SFTP 的。)cd/d c:\users\user\documents\transfer scp *.txt [email protected]:
将命令作为明确的输入传输到管道
sftp
(我不确定这是否适用于 Windows)。cd/d c:\users\user\documents\transfer echo put *.txt | sftp [email protected]