使用sftp将今天的日期(如ABC_20161010_DEF.zip)的zip文件从Linux服务器移动到Windows服务器
我使用下面的代码来移动zip文件。使用sftp将今天的日期(如ABC_20161010_DEF.zip)的zip文件从Linux服务器移动到Windows服务器
不幸的是我无法得到设置部分权利。我想与Windows批处理文件命令(set
)设置申能有像 “ABC_20161010_DEF.zip”
open [email protected]
ascii
cd "ValidPathHere"
lcd "ValidPathHere"
Set Dt=SomePrefixHere_%date:~-4,4%%date:~-10,2%%date:~-7,2%_SomeSuffixHere.zip
get Dt
pause
quit
你混合SFTP客户端(OpenSSH的sftp
?)值命令(open
,get
等)。这是不可能的。
您必须从Windows批处理文件调用set
,然后在SFTP脚本中使用已解析的值。如何做到这一点取决于您的SFTP客户端的功能。
如果您使用OpenSSH sftp
,您必须随时生成脚本,因为其脚本无法解析环境变量。另一方面,OpenSSH sftp
没有ascii
命令。所以我不确定,你实际使用的是什么客户端。
另请注意,使用date
环境变量不可靠。它给不同的区域设置提供不同的值。例如,在美国区域,%date%
解析为ddd, mm/dd/yyyy
,因此您将获得yyyymmdd
。相反,在英国区域,%date%
解析为dd/mm/yyyy
,因此您将获得yyyyddmm
。在其他语言环境中,您可以获得另一个结果。
一种简单和更可靠的解决方案,是使用WinSCP SFTP client,以其语言环境无关%TIMESTAMP%
syntax。如果您需要,WinSCP也支持ascii/text mode (using the -transfer=ascii
switch)。
随着WinSCP scripting,您可以使用批处理文件(.bat
),如:
"C:\Program Files (x86)\WinSCP\WinSCP.com"^
/log="C:\writable\path\to\log\WinSCP.log" /ini=nul^
/command^
"open sftp://username:[email protected]/ -hostkey=""..."""^
"get -transfer=ascii ""/remote/path/SomePrefixHere_%%TIMESTAMP#yyyymmdd%%"" ""C:\local\path\"""^
"exit"
你甚至可以有WinSCP generate the script/batch file template你。
(我的WinSCP的作者)
什么'sftp'脚本是什么? OpenSSH的? –