怎么用dos写一个批处理,要求按时间删除旧文件,只保留最新文件,因为我要做数据库定时备份,在线等
3个回答
展开全部
用for命令处理dir /b/o-d的列表,跳过前面不需要删除的部分。dir /o-d是按时间倒序排列。
for /f "skip=1 tokens=* delims=" %i in ('dir /b/o-d 你的备份目录) do @del /f/q "%i"
上面的命令只是给出一个大概的样子,调整skip=后面的参数,可以选择跳过几个文件不删除,剩下的你还要自己调试一下。建议你先在@后面加上echo 进行调试,以免误删不能删除的文件。调试好后再去掉echo。
for /f "skip=1 tokens=* delims=" %i in ('dir /b/o-d 你的备份目录) do @del /f/q "%i"
上面的命令只是给出一个大概的样子,调整skip=后面的参数,可以选择跳过几个文件不删除,剩下的你还要自己调试一下。建议你先在@后面加上echo 进行调试,以免误删不能删除的文件。调试好后再去掉echo。
追问
我见过网上有人这样做,但是不明白什么意思
@echo off
FOR /f "usebackq skip=4 tokens=4,* delims= " %%i IN (`dir /x /o:-d`) DO (del %%i
goto end)
:end
echo ok!
追答
你学一下for命令的用法就知道了。跟我的意思差不多,但它的不如我的好用。
展开全部
@echo off
set n=2
::保留最近 n 天的文件(早于 n 天就删除)
set p=d:\data
::操作的目录
robocopy /s "%p%" d:\xxxxxx /minage:%n% /mov
rd /s /q d:\xxxxxx
set n=2
::保留最近 n 天的文件(早于 n 天就删除)
set p=d:\data
::操作的目录
robocopy /s "%p%" d:\xxxxxx /minage:%n% /mov
rd /s /q d:\xxxxxx
更多追问追答
追问
你这个不是删除,是移动和拷贝到令一个文件夹下,和我的要求完全不一样。
我见过网上有人这样做,但是不明白什么意思,能帮我解释下吗
@echo off
FOR /f "usebackq skip=4 tokens=4,* delims= " %%i IN (`dir /x /o:-d`) DO (del %%i
goto end)
:end
echo ok!
追答
我这个是简单实现你的要求的代码,先把满足条件的文件移动到一个文件夹,再删掉这个文件夹。
结果完全一样。
你提供的代码有明显的错误,已经无法理解它的真实意图。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询