批处理如何实现删除当前目录内最近修改时间3天以外的所有文件?

现在碰到这么个问题,有个备份目录下有许多子目录,子目录都是对应不同的账号,每个子目录下还有不少文件,但都是每天的备份,可子目录太多,备份只要留3天的就够了,每次删都太麻烦,望有能人可以解惑下。批处理实在小白

第二行设置保留文件数量,每天一个文件就设置为3,每天大约十个文件就设置为30以此类推
第三行设置备份文件后缀,本批以txt为例
为保证数据安全本批只显示删除命令不执行,核对无误后把倒数第二行前面的del删除后运行即可。
@echo off
set k=3
set hz=txt
pushd r:\back
for /d %%i in (*) do (
echo %%i
for /f "skip=%k%" %%j in ('dir/b/o-d %%i\*.%hz%') do (
echo del "%%~dpnxj"))
pause
温馨提示:内容为网友见解,仅供参考
第1个回答  2021-08-04
不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行
<# :
cls&echo off&mode con lines=5000
rem 查找并删除当前目录下修改时间在指定天数以前的文件
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$ago=-3;
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;
$agodate=(get-date).AddDays($ago).toString('yyyy-MM-dd');
$files=@(dir -liter $path -recurse|?{($self.Name -ne $_.Name) -and ($_ -is [System.IO.FileInfo])}|sort {$_.LastWriteTime} -Descending);
for($i=0;$i -lt $files.length;$i++){
$wt=$files[$i].LastWriteTime.toString('yyyy-MM-dd');
if($wt -le $agodate){'['+$wt+']'+$files[$i].FullName.Substring($path.length);}
}
第2个回答  2021-08-04
只看修改时间吗,还是还需要看别的什么属性?追问

嗯,只看修改时间,或者创建时间,由于这些文件不是最近几天的,至少是2个月前的,所以没法以现在时间为准设置参数,很多命令我记得都是可以把现在时间往前数几天的文件筛出来,但眼前这个情况不行。

追答

可帮写工具实现 私信

批处理如何实现删除当前目录内最近修改时间3天以外的所有文件?
第二行设置保留文件数量,每天一个文件就设置为3,每天大约十个文件就设置为30以此类推 第三行设置备份文件后缀,本批以txt为例 为保证数据安全本批只显示删除命令不执行,核对无误后把倒数第二行前面的del删除后运行即可。echo off set k=3 set hz=txt pushd r:\\back for \/d %%i in (*) do...

帮我写个批处理命令自动删除某文件夹及子文件夹内3天内没有修改的内容...
::功能:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件。::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。rem 指定待删除文件的存放路径 set SrcDir=C:\\Test rem 指定天数 set DaysAgo=3 forfiles \/p %SrcDir% \/s \/m *.* \/d -%DaysAgo% \/c "cmd \/c echo ...

如何安时间批处理删除文件,我想把文件下三个月前的数据全部删除,如何...
::功能:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件 rem 指定待删除文件的存放路径(兼容含有空格的文件夹)set SrcDir=D:\\test rem 指定天数 set DaysAgo=90 ::如果演示没问题,请把下行的 echo 删掉,以便实际删除文件。forfiles \/p "%SrcDir%" \/s \/m *.* \/d -%DaysAg...

请问:如何批处理删除文件夹及其所有子文件夹下N天前所有文件?
根据这个思路.先删除30天以前的文件夹.再删除30天以内文件夹下所有30天以前的文件.那么就结果就如下:forfiles -D -30 \/M * \/C "cmd \/c rd @file \/s \/q"forfiles -D -30 \/S \/M * \/C "cmd \/c del @path \/s \/q"两行批处理即可搞定 ...

如何用批处理自动删除一个磁盘里的所有EXE文件?
一、简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法echo [{on off}] [message] Sample:@echo off \/ echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到...

如何用批处理实现;根据文件或文件夹的'最后修改时间(或生成时间)'删除...
echo 处理完成,按任意键退出程序 pause>nul&exit === 回楼主,可以的,帮你修改了下..echo off setlocal enabledelayedexpansion Rem 取30天之前的日期,取回放入变量riqi echo wscript.echo dateadd("d",-30,date) >%tmp%\\tmp.vbs for \/f "tokens=1,2,3* delims=-" %%i in ('cscript \/...

批处理如何实现删除指定文件夹内按修改时间排序最久的50个文件?
<# :cls echo off rem 将一个指定文件夹里修改时间最旧\/最久的前几个文件删除 set #=Any question&set @=WX&set $=Q&set\/az=0x53b7e0b4 title %#% +%$%%$%\/%@% %z cd \/d "%~dp0"powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::...

电脑怎么设置注销时删除某个时间点后的全部文件
1.先写一个批处理文件负责删除你建的那个文件夹。新建一个txt文本文件,在里面写上:echo 注:例子是如果你想删除C:\\123\\A文件夹,这里的文件夹路径请按需要修改,然后清空回收站 rd \/s \/q C:\\123\\A attrib -h -s -r "C:\\RECYCLER\\S-1-5-21-1343024091-57989841-1417001333-500"rd\/s\/q ...

请问各位大大,如何用批处理实现某目录下上一天以前建的所有压缩文件,谢 ...
保存为bat文件运行,这是删除e:\\111文件夹下的2天前的rar文件.echo off&setlocal EnableDelayedExpansion ::取2天之前的日期.set _tian=2下面这句中的2代表天数.set "_tian=2">tmptmp.vbs echo wscript.echo dateadd("d",-%_tian%,date)for \/f "tokens=1,2,3* delims=-" %%i in ('...

批处理 如何将指定路径下当前日期前三天的文件拷贝到另一个指定路径_百...
有会批处理的大神么?比如需要复制的文件在目录是 D:\\文件夹1 然后我需要找出这个目录下文件修改日期在7天之前的所有文件,把这些文件复制到目录D:\\Back 下面,然后删除掉之前D:\\文件夹1 目录下复制的文件 给你个类似的参考下:C# code?1 2 3 4 5 6 var files = Directory.GetFiles(""...

相似回答