我有一个批处理文件,用于通过SFTP将文件从本地PC移动到服务器。我的系统中安装了PuTTY,后面是批处理文件代码。
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
文件来运行它。但我无法实现它。任何想法或片段都会对我有所帮助。
您需要将psftp脚本(从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
编辑:对于用户名+密码:由于您不能在批处理文件中使用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显然无法理解。
如果您确实希望将所有内容保存在一个文件(批处理文件)中,则可以将命令写入psftp标准输入,例如:
(
echo cd ...
echo lcd ...
echo put log.sh
) | psftp -b script.txt <user>@<IP> -pw <PW>
set DSKTOPDIR="D:\test"
set IPADDRESS="23.23.3.23"
>%DSKTOPDIR%\script.ftp ECHO cd %PAY_REP%
>>%DSKTOPDIR%\script.ftp ECHO mget *.report
>>%DSKTOPDIR%\script.ftp ECHO bye
:: run PSFTP Commands
psftp <domain>@%IPADDRESS% -b %DSKTOPDIR%\script.ftp
在上面的行之前使用set命令设置值。
我相信这会对你有所帮助。
裁判sftp设置为以下链接qazxsw poi