能实现的,给积分20
有人知道吗?再加20分,40分,有人能回答吗
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命令的用法就知道了。跟我的意思差不多,但它的不如我的好用。
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!
我这个是简单实现你的要求的代码,先把满足条件的文件移动到一个文件夹,再删掉这个文件夹。
结果完全一样。
你提供的代码有明显的错误,已经无法理解它的真实意图。
我明白,你这样太麻烦了,一个数据库备份文件750MB,以后还会更多,要照你这么操作,时间太长了
追答@echo off
set n=2
::保留最近文件的个数(按时间排序)
set p=d:\data
::操作的目录
for /f "skip=%n% tokens=*" %%i in ('dir /b /o-d "%p%") do del /f /q "%%i"
能解释一下吗?我只能读懂一点,我刚才又看到网上很多人的思路,是先把所有文件按最新时间排序,写在一个txt文件里,然后用for循环读这个文件,跳过第一个文件,再逐一删除
追答set n=2
set p=d:\data
for /f "skip=%n% tokens=*" %%i in ('dir /b /a-d /o-d "%p%"') do del /f /q "%%i"
dir /b /a-d /o-d "%p%" :按时间顺序列出文件,新文件在前
skip=%n% :跳过几个文件(就是要保留几个最新文件)
我修改了你这句话,for /f "skip1" %i in (D:\dataBase\) do del /f /q %i,我直接在dos下运行可以,但是写一个批处理文件dat,就报不应该有do,怎么回事
追答CMD 里面运行:
for /f "skip=1 tokens=*" %i in ('dir /b /a-d /o-d D:\dataBase') do del /f /q "%i"
批处理里面:
for /f "skip=1 tokens=*" %%i in ('dir /b /a-d /o-d D:\dataBase') do del /f /q "%%i"
你修改的不对哦
我修改了一下,成功了,谢谢了啊
for /f "skip=1 tokens=*" %%i in ('dir /b /a-d /o-d D:\dataBase\') do del /f /q D:\dataBase\%%i
cmd
哦,因为没有用 /s 参数,所以得到的文件名不含路径,需要添加上路径。
本回答被提问者和网友采纳这几个都与你的问题相似,你参考下。