帮我写个批处理命令自动删除某文件夹及子文件夹内3天内没有修改的内容

RT 请大侠们帮帮忙 最好带点解释 采纳给分!!!

@echo off
::功能:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件。
::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。

rem 指定待删除文件的存放路径
set SrcDir=C:\Test
rem 指定天数
set DaysAgo=3

forfiles /p %SrcDir% /s /m *.* /d -%DaysAgo% /c "cmd /c echo del /f /q /a @path"
pause追问

'forfiles' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
请按任意键继续. . .

这个。。。。什么情况

追答

FORFILES 是系统自带的软件哦,win2000,xp,2003,vista,win7 都有。
你的系统难道是其他的?或者是精简的?

追问

啊~~我系统xp sp 3的 真的莫有啊~

追答

去别的电脑上复制一个吧,在 c:\windows\system32 里面,forfiles.exe,几十K大小。
我的WIN7,WIN2003上都有的。

追问

大哥,我试了,能运行了,就是超过3天文件夹不能删除,文件倒是都删除了,能改一下么?实在太感谢你了,加个好友吧,75094598

追答

文件与文件夹的操作是不同的。况且如果文件夹里面有文件时,你删掉文件夹是不是不合适呢?
因为可能把不应该删除的文件也一并删除了。
所以可以上上面代码先删除满足条件的文件,再删除空文件夹,这样才对吧?

追问

E:\中转 下有很多子文件夹,如果这个子文件夹里的文件或者它的子文件夹下的文件超过3天没有更新,就一并把这个子文件夹下所有内容删除!
例如:E:\中转\123 123这个文件夹里的文件或者它的子文件夹下的文件超过3天没有更新,就一并把这个123文件夹下所有内容删除!如果有更新,就不动它。
这个能实现么?

追答

在上面代码的 pause 前面插入下面行:

cd /d "%SrcDir%"
for /d %%d in (*) do (
for /f "tokens=1 delims= " %%i in ('dir /s /a /-c "%%d" ^|findstr 个文件') do (
::如果演示没问题,请把下行的 echo 删掉,以便实际删除文件夹。
if %%i.==0. echo rd /s /q "%%d"))
pause >nul

追问

set SrcDir=C:\Test 这里如果路径中有空格就会显示:
错误: 无效参数/选项 - 'kan'。(路径为C:\kan kan)
键入 "FORFILES /?" 以了解用法。
是不是路径名不能有空格啊? 我这路径名不能更改的...囧

追答

forfiles /p %SrcDir% 改成 forfiles /p "%SrcDir%" 就行了。

@echo off
::功能:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件及文件夹。
rem 指定待删除文件的存放路径(兼容含有空格的文件夹)
set SrcDir=C:\Test Dir
rem 指定天数
set DaysAgo=3
forfiles /p "%SrcDir%" /s /m *.* /d -%DaysAgo% /c "cmd /c echo del /f /q /a @path"
cd /d "%SrcDir%"
for /d %%d in (*) do (
for /f "tokens=1 delims= " %%i in ('dir /s /a /-c "%%d" ^|findstr 个文件') do (
::如果演示没问题,请把下行的 echo 删掉,以便实际删除文件夹。
if %%i.==0. echo rd /s /q "%%d"))
pause >nul

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-29
说实话,你给的分数与这个问题比起来。。。。
给一个能显示三天前日期的代码吧,已经被我修改成显示3天前的日期
至少和你的有点靠边了,有时间我再帮你整整变成你要的。。。
================================================================
@echo off
:: 作者: namejm 出自:cn-dos
:: 求N天前的日期
:: 日期可以带星期,但是,必须以年月日的顺序排列
:: 年份必须是四位,否则会出错
@echo off
:Main
cls
set day=%date%
set days=0
echo.&echo.
echo 当前日期是:%day%
echo.&set input= 3
setlocal enabledelayedexpansion
:: 提取日期
for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do (
set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100
)
set /a sd-=input
if %sd% leq 0 call :count
cls&echo.&echo.
echo 当前日期是:%day%
echo.
set sm=0%sm%
set sd=0%sd%
echo %input% 天前的日期是:%sy%-%sm:~-2%-%sd:~-2%
pause>nul
goto Main

:count
set /a sm-=1
if !sm! equ 0 set /a sm=12, sy-=1
call :days
set /a sd+=days
if %sd% leq 0 goto count
goto :eof

:days
:: 获取指定月份的总天数
set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
set /a max=28+leap
for /f "tokens=%sm%" %%i in ("31 %max% 31 30 31 30 31 31 30 31 30 31") do set days=%%i
goto :eof追问

大哥 你能写得简单点吗? 我就想得到一BAT,自动删除一下一文件里 子文件夹和文件超过3天没有动过的,然后做个计划任务,你懂吧?

追答

以下是代码,其中有调用一个第三方工具dateX 获取3天前的准确日期!请及时百度Hi我!我得打包传给你才能用,而且详细使用方法,也得先告诉你,使用不当甚至可能删除重要文件!!!
::======================================================
@echo off
color 3f
title 删除3天未修改文件 By 暗夜々幽魂
Setlocal EnableDelayedExpansion
if exist 1.tmp del /F /S /Q 1.tmp >nul
for /f "tokens=1 delims= " %%a in ('datex -o -3') do set day=%%a
for /f "tokens=4 delims= " %%i in ('dir /tw /a-d /s "目标文件夹路径,如D:\TEST" ^| find "%day%" ') do echo %%i >>tmp.txt
echo 3天未更新的文件已找到,任意键查看列表...
pause>nul
start "" tmp.txt
echo 任意键删除三天未更新文件...
pause>nul
for /f %%j in ('type 1.tmp') do del /s /q /f %%j
exit

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

如何实现能自动删除指定文件夹内最近三天以外的文件的批处理命令?
我假设你指定的文件夹是d:\\games echo off setlocal enabledelayedexpansion for \/f "tokens=1,2,3 delims=-" %%i in ('echo %date%') do (set d=%%i%%j%%k set \/a d1=!d!-3 for \/f "tokens=*" %%a in ('dir \/b \/s d:\\games\\') do (set var=%%~ta set var1=!var:~...

如何用DOS的批处理来定期自动删除某个文件夹里的所有文件
1、打开记事本程序,在其中写入以下命令。del x:\\y\\*.* \/s \/q (x为你想操作的盘符,y为你想操作的文件夹名)exit 2、保存此文件为.BAT或者.CMD文件。3、使用控制面板中的“计划任务”,设定一个时间运行此批处理文件。4、更简单的办法:把这个.bat 或.cmd文件放在开始菜单中的“启动”项中。

bat 批处理程序删除文件夹,只保留最近两天的文件
if not %days%==1 goto days前的日期 for \/f %%i in ('dir \/b A10???_???') do call :删除文件 %%i echo 删除%days%天前的文件夹OK!pause exit :删除文件 set files=%~n1 if %files:~1,6% LSS %terday:~2,6% rd \/q\/s %files goto :eof :是否润年 set day=28 set \/a...

windows下bat脚本实现定时删除指定文件夹下的文件和文件夹
在Windows环境下,要实现定时清理特定文件夹(例如E:\\ABC\\DEF)的文件和子文件夹,可以使用bat脚本。首先,创建一个名为del.bat的批处理文件,内容如下:f \/s \/q E:\\ABC\\%date:~0,4%\\%date:~5,2%\\%date:~8,2%\\*.* >nul s \/q E:\\ABC\\%date:~0,4%\\%date:~5,2%\\%date:~8,2%...

删除3天前日期的备份文件夹批处理
代码如下:echo offif exist %tmp%\\folderL.txt del %tmp%\\folderL.txtsetlocal enableDelayedExpansionecho Today is: %date:~0,4% \/ %date:~5,2% \/ %date:~8,2%set \/a limit=%date:~0,4%*360+%date:~5,2%*30+%date:~8,2%-3for \/f "delims=" %%f in ('dir \/b e:\\exp...

写个批处理删除指定文件或指定文件夹
使用的是del命令+rd命令,先删除文件,在进入相应文件夹删除文件夹下的文件夹,如下:del \/f \/s \/q C:\\Users\\dell\\AppData\\Local\\Temp\\*.cd C:\\Users\\dell\\AppData\\Local\\Temp rd \/s \/q C:\\Users\\dell\\AppData\\Local\\Temp

批处理自动删除命令
echo offrem 根据exe程序\/进程是否在运行删除文件夹set @=有问题联系&set #=Q&set\/az=0x53b7e0b4title %@% +%#%%#% %z%set "目录=D:\\xxx\\文件夹1"if not exist "%目录%" (echo;"%目录%" not found&goto end):loopset "f="for \/f "delims=" %%a in ('dir \/a-d\/b "%...

批处理自动删除命令
echo off & title 循环判断进程,并删除文件夹 By 依梦琴瑶 ::设置文件夹路径 set SrcDir=文件夹1 ::设置进程名 set Proc=A.exe :Loop tasklist | find \/i "%Proc%" >nul 2>nul && goto Loop || rd \/s \/q "%SrcDir%"exit echo off & title 友情一下 call :Donate exit :Donate...

批处理删除文件夹(批处理强制删除文件夹内文件)
1. rd命令 rd \/s \/Q c:emp 还将删除临时文件夹 2. rd命令+ md命令 rd \/s \/Q c:emp md c:Temp 删除并重建 3. del命令 del \/s \/Q c:emp 只能删除文件,不能删除子文件夹 4. del命令+ rd命令,先删除文件,然后进入temp文件夹删除目录 del \/s \/Q c:emp cd C:emp rd \/s \/q...

相似回答