我想从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