使用Windows批处理脚本保护FTP
我目前在不同的服务器上有批处理脚本,可以将csv文件传输到不同位置的FTP服务器。我的脚本与此类似:使用Windows批处理脚本保护FTP,windows,batch-file,ftp,sftp,Windows,Batch File,Ftp,Sftp,我目前在不同的服务器上有批处理脚本,可以将csv文件传输到不同位置的FTP服务器。我的脚本与此类似: echo user ftp_user> ftpcmd.dat echo password>> ftpcmd.dat echo put c:\directory\%1-export-%date%.csv>> ftpcmd.dat echo quit>> ftpcmd.dat ftp -n -s:ftpcmd.dat ftp.MyFTPSite.com de
echo user ftp_user> ftpcmd.dat
echo password>> ftpcmd.dat
echo put c:\directory\%1-export-%date%.csv>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat ftp.MyFTPSite.com
del ftpcmd.dat
如果我想要求安全传输,我的脚本将如何更新
谢谢。内置FTP命令没有安全功能。改用。它可以编写脚本,更加健壮,并且具有FTP安全性 首先,如果需要使用(=FTPS,根据您的文本)或(根据您使用的标签),请确保您理解 Windows命令行
ftp.exe
都不支持这两种方法。正如您所建议的,您可以使用。它支持FTP和SFTP
使用WinSCP,批处理文件如下所示(对于SFTP):
和批处理文件:
winscp.com /log=ftpcmd.log /script=ftpcmd.dat /parameter %1 %date%
尽管使用了WinSCP的所有功能(尤其是和),批处理文件简化为:
winscp.com /log=ftpcmd.log /command ^
"open sftp://ftp_user:password@ftp.MyFTPSite.com -hostkey=""server's hostkey""" ^
"put c:\directory\%1-export-%%TIMESTAMP#yyyymmdd%%.csv" ^
"exit"
有关-hostkey
开关的用途,请参阅
比手动组装脚本/批处理文件更容易的是在WinSCP GUI中设置和测试连接设置,然后让它:
您只需要调整源文件名(使用前面所示的%TIMESTAMP%
语法)和日志文件的路径
对于FTP,将中的
sftp://
替换为ftpes://
()或FTPS://
()。卸下-hostkey
开关
winscp.com /log=ftpcmd.log /command ^
"open ftps://ftp_user:password@ftp.MyFTPSite.com -explicit" ^
"put c:\directory\%1-export-%%TIMESTAMP#yyyymmdd%%.csv" ^
"exit"
如果您的服务器的证书无效,您可能需要添加-certificate
开关
同样,与SFTP一样,更容易的方法是在WinSCP GUI中设置和测试连接设置,然后进行测试
看一个完整的例子 你也应该读一下
注意使用
%TIMESTAMP#yyyymmdd%
代替%date%
:变量值的格式是特定于语言环境的。因此,请确保在实际使用脚本的同一语言环境中测试脚本。例如,在我的捷克语言环境中,%date%
解析为čt 06。112014
,当用作文件名的一部分时可能会出现问题
因此,WinSCP支持。例如,%TIMESTAMP#yyyymmdd%
在任何语言环境下解析为20170515
(我是WinSCP的作者)ftps-a-z-e:on-pfxfile:“S-PID.p12”-pfxpwfile:“S-PID.p12.pwd”-用户:-S:script 2121
S-PID.p12=>证书文件名;
S-PID.p12.pwd=>证书密码文件名;
RemoteServerName=>abcd123;
2121=>端口号;
ftps=>命令是ftps客户端软件的一部分;
WinSCP是否也是一个足够的替代品?您好,请尝试为您的代码提供一些上下文,例如它正在做什么以及您建议OP使用什么软件。
winscp.com /log=ftpcmd.log /command ^
"open ftps://ftp_user:password@ftp.MyFTPSite.com -explicit" ^
"put c:\directory\%1-export-%%TIMESTAMP#yyyymmdd%%.csv" ^
"exit"
ftps -a -z -e:on -pfxfile:"S-PID.p12" -pfxpwfile:"S-PID.p12.pwd" -user:<S-PID number> -s:script <RemoteServerName> 2121
S-PID.p12 => certificate file name ;
S-PID.p12.pwd => certificate password file name ;
RemoteServerName => abcd123 ;
2121 => port number ;
ftps => command is part of ftps client software ;