2016-10-11 88 views
3

我想從Windows服務器到我的FTP執行自動文件傳輸。Windows批處理文件 - 僅上傳最新文件到FTP

問題是該文件的名稱中生成了時間戳(名稱不固定)。所以我只需要上傳文件的最後一個版本(最新版本)。有沒有辦法如何做到這一點?

在Windows Server 2003下運行。謝謝。

+0

所以你要根據它的名稱來選擇文件(我們展示了一個例子)或者基於文件的「最後修改」時間戳? –

+0

基於上次修改更好。文件保存爲:Volny_sklad_20161010.pdf,Volny_sklad_20161010(1).pdf – whiterabbit

回答

3

要選擇Windows批處理文件的最新文件,請參閱
How do I write a Windows batch script to copy the newest file from a directory?

此基礎上,你可以創建這樣一個批量上傳文件:

@echo off 

FOR /F %%I IN ('DIR C:\source\path\*.* /B /O:D') DO SET NEWEST_FILE=%%I 

echo Uploading %NEWEST_FILE% 

(
    echo open ftp.example.com 
    echo username 
    echo password 
    echo put C:\source\path\%NEWEST_FILE% /target/path/%NEWEST_FILE% 
    echo bye 
) > ftp.txt 

ftp.exe -s:ftp.txt 

爲了更方便,更可靠的方法,使用一些更強大的第三方FTP客戶端。

例如對於WinSCP FTP client,您可以使用其put command-latest switch

一個例子批處理文件(.bat):

winscp.com /ini=nul /command^
    "open ftp://username:[email protected]/"^
    "put -latest C:\source\path\* /target/path/"^
    "exit" 

,你甚至可以有WinSCP generate the script/batch file for you(你只需要手動添加-latest開關)。

參見WinSCP article on Uploading the most recent file

(我的WinSCP的作者)

+0

天才。與WinSCP很好地合作。非常感謝 !最後一個小問題,我可以添加一些命令來刪除ftp目錄中的所有其他/較舊的文件? – whiterabbit

+1

在'「put ...」行之前加上'「rm/target/path/*」^'。 –

+0

非常感謝! – whiterabbit