2016-10-10 67 views
1

我使用下面的代碼來移動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 
+0

什麼'sftp'腳本是什麼? OpenSSH的? –

回答

0

你混合SFTP客戶端(OpenSSH的sftp?)值命令(openget等)。這是不可能的。

您必須從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的作者)

相關問題