2013-05-08 204 views
11

我有一个批处理文件,用于通过SFTP将文件从本地PC移动到服务器。我的系统中安装了PuTTY,批处理文件代码如下。PuTTY/PSFTP文件传输自动化的批处理文件

cd C:\Program Files (x86)\PuTTY 
psftp 
open <IP> 
<user> 
<PW> 
cd /home/irisuser/iris/integration/dls_dlsblr_dlschnn_in_msg/in 
lcd d:\ 
put log.sh 
bye 

当我在命令提示符下键入它时,上面的代码完美地起作用。但是,当我双击.bat文件并运行它时,它并未运行,并要求输入用户名和密码。我的目标是自动化整个事情,我需要通过简单地点击.bat文件来运行它。但我无法实现它。任何想法或片段都会帮助我。

回答

18

你需要使用-b切换到PSFTP脚本(从openbye线)存储到一个单独的文件,并传递到psftp

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


编辑:对于用户名+密码:正如你不能在一个批处理文件中使用psftp命令,出于同样的原因,你不能指定用户名和密码psftp命令。这些是open命令的输入。虽然您可以使用open命令(open <user>@<IP>)指定用户名,但不能以这种方式指定密码。这只能在psftp命令行上完成。那么它可能更清洁做的所有的命令行:

cd "C:\Program Files (x86)\PuTTY" 
psftp -b script.txt <user>@<IP> -pw <PW> 

从你script.txt删除open<user><PW>线。

参考:
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显然不理解的。

+0

嗨马丁, 非常感谢吨快速回复。我已经修改,如你所说。 我的屏幕现在像这样挂起。 (x86)\ PuTTY>“cd C:\ Program Files(x86)\ PuTTY”文件名,目录名称或卷标语法不正确C:\ Program Files(x86)\ PuTTY> psftp - b script.txt psftp:没有指定主机名称;使用“open host.name”登录为: – suresh 2013-05-08 12:46:36

+0

1)它是'cd“C:\ ... \ PuTTY”'2)请参阅我的回答中的编辑 – 2013-05-08 13:01:05

+0

它的运行完美,谢谢。 – suresh 2013-05-09 04:53:49