你混合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的? –