我想從Windows服務器到我的FTP執行自動文件傳輸。Windows批處理文件 - 僅上傳最新文件到FTP
問題是該文件的名稱中生成了時間戳(名稱不固定)。所以我只需要上傳文件的最後一個版本(最新版本)。有沒有辦法如何做到這一點?
在Windows Server 2003下運行。謝謝。
我想從Windows服務器到我的FTP執行自動文件傳輸。Windows批處理文件 - 僅上傳最新文件到FTP
問題是該文件的名稱中生成了時間戳(名稱不固定)。所以我只需要上傳文件的最後一個版本(最新版本)。有沒有辦法如何做到這一點?
在Windows Server 2003下運行。謝謝。
要選擇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的作者)
天才。與WinSCP很好地合作。非常感謝 !最後一個小問題,我可以添加一些命令來刪除ftp目錄中的所有其他/較舊的文件? – whiterabbit
在'「put ...」行之前加上'「rm/target/path/*」^'。 –
非常感謝! – whiterabbit
所以你要根據它的名稱來選擇文件(我們展示了一個例子)或者基於文件的「最後修改」時間戳? –
基於上次修改更好。文件保存爲:Volny_sklad_20161010.pdf,Volny_sklad_20161010(1).pdf – whiterabbit