为本地找到了几个解决方案,但需要一个用于FTP操作:
我有一个每日批处理脚本来备份本地的MySQL数据库,但是我也将它们通过ftp传输到备份服务器。
在本地,我使用forfiles删除超过14天的文件:
forfiles -p "C:\whatever" -s -m *.* -d 14 -c "cmd /c del @path"`我想在FTP上做同样的事情,一旦最新的备份文件被转储到运行在Windows Server2008 R2上的FTP服务器上。
如何扩展我的批处理文件以执行此操作?
cd\[path to directory where files are saved]
echo off
echo user [ftp username]>ftpup.dat
echo [ftp password]>>ftpup.dat
echo binary>>ftpup.dat
echo put [FullBackup.%backupdate%.zip]>>ftpup.dat
echo quit>>ftpup.dat
ftp -n -s:ftpup.dat [myserver.com]
del ftpup.dat发布于 2012-03-13 20:36:10
回显用户ftp username>ftpdir.txt回显ftp password>>ftpdir.txt回显目录。myserver.com
echo user ftp password>>ftpdel.txt
对于循环内的/f "tokens=6,7,8,*“%%a in (ftplist.txt) do ( echo %%d )
回显%%c%%a%%b- %%d
并将月份名称转换为数字
呼叫:月%%a
您可以使用http://www.dostips.com/DtTipsStringManipulation.php
呼叫:天数%%c%月%b
这是对使用Fliegel-Van Flandern算法计算日期的例程的调用。最后,在循环中,比较结果数,如果大于14,则将文件添加到文件中以删除How can I check the time stamp creation of a file in a Windows batch script?
如果!天!GEQ 14回显DEL %%d >>ftpdel.txt
myserver.com quit>>ftpdel.txt ftp -n -s:ftpdel.txt echo
发布于 2016-07-27 23:35:09
正如非常好的answer by @PA.所显示的那样,使用内置的ftp.exe实现它很麻烦。
你最好使用一些更强大的脚本化第三方FTP客户端。
以WinSCP FTP client为例,它很简单,就像:
winscp.com /ini=nul /log=delete.log /command ^
"open ftp://username:password@ftp.example.com/" ^
"rm /remote/path/*<14D" ^
"exit"参见file masks with time constraints。
(我是WinSCP的作者)
https://stackoverflow.com/questions/9626618
复制相似问题