中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 高手来帮我写个批处理吧~删文件个目录的【已经解决】
作者:
标题: 高手来帮我写个批处理吧~删文件个目录的【已经解决】 上一主题 | 下一主题
yhshiro
初级用户





积分 130
发帖 59
注册 2007-12-25
状态 离线
『楼 主』:  高手来帮我写个批处理吧~删文件个目录的【已经解决】

我想要个能删除某个盘下超过3天的任何文件包括目录,要可以指定排除目录和文件的!


例如:我指定不删除D盘下的(下载),那运行后的效果是 D盘下只有一个(下载)的目录其他的都删了,D盘(下载)目录里面超过3天的文件也删除了~

  Quote:
看一下这个。。。这个只是删除超过3天的文件,不会删除目录,也不可以指定不需要删除的文件和目录!
是这BBS的人帮我写的!麻烦再帮忙改改~~

SET TT=3
set p1=%date:~0,4%
set p2=%date:~5,2%
set p3=%date:~8,2%
setlocal enabledelayedexpansion
for /l %%a in (1,1,3) do (
for /f "delims=0 tokens=*" %%i in ("!p%%a!") do set p%%a=%%i
)
if %p3% gtr %TT%  goto ppp
:nxt
set/a p2-=1
if %p2% equ 0 set/a p1-=1&&set p2=12
SET/a PN1=%p1%%%4
set PN2=28
if %PN1% EQU 0 set pN2=29
for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3=%p3%+%%i
if %p3% leq %tt% goto nxt
:ppp
set/a p3=%p3%-%tt%
set p2=0%p2%
set p2=%p2:~-2,2%
set p3=0%p3%
set p3=%p3:~-2,2%
for /r "f:\" %%i in (*.*) do set t=%%~ti &&call :loop "%%~fi"
goto :eof
:loop
if not "%~1" == "%~f0" (
IF %p1%%p2%%p3% gtr %t:~0,4%%t:~5,2%%t:~8,2% del %1
)

[ Last edited by yhshiro on 2008-3-1 at 09:23 PM ]

2008-2-28 14:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yhshiro
初级用户





积分 130
发帖 59
注册 2007-12-25
状态 离线
『第 2 楼』:  

我已经改了,来个会的帮我写个啊,我不会BAT

2008-2-28 19:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 3 楼』:  



  Quote:
@echo off
regedit /e "%temp%\bak.reg" "HKEY_CURRENT_USER\Control Panel\International"
>aDate.reg echo REGEDIT4
>>aDate.reg echo.
>>aDate.reg echo [HKEY_CURRENT_USER\Control Panel\International]
>>aDate.reg echo "sShortDate"="yyyy-MM-dd"
>>aDate.reg echo "sDate"="-"
>>aDate.reg echo "sTimeFormat"="HH:mm:ss"
regedit /s aDate.reg&del aDate.reg

>tmp.vbs echo Wscript.echo FormatDateTime (DateAdd("d", -3 ,Date),2)
for /f "delims=" %%i in ('cscript.exe //nologo tmp.vbs') do set aDate=%%i
del tmp.vbs
ver|find "2000">nul&&set aDate=%aDate:~2%
set aDate=%aDate:-=%

setlocal EnableDelayedExpansion
for /f "tokens=1,3*" %%i in ('dir /a-d "*.*"^|find "."') do (
        set fileDate=%%i
        set fileDate=!fileDate:-=!
        if !fileDate! LSS %aDate% del /q/f "%%k"
)

setlocal EnableDelayedExpansion
for /f "skip=2 tokens=1,3*" %%i in ('dir /ad *^|find "<DIR>"^|find "你要排除的文件夹名"') do (
        set fileDate=%%i
        set fileDate=!fileDate:-=!
        if !fileDate! LSS %aDate% rd /q "%%k"
)

regedit /s "%temp%\bak.reg"&del /q "%temp%\bak.reg"
pause

红色-3表示前3天
红色del /q/f "%%k"你够狠换成del /q/f/s "%%k"
红色rd /q "%%k"你够狠换成del /q/f/s "%%k\*"&rd /q/s "%%k"
运行该代码风险自担



第一高手    第二高手

2008-2-29 00:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yhshiro
初级用户





积分 130
发帖 59
注册 2007-12-25
状态 离线
『第 4 楼』:  

不行啊?运行后没效果!

2008-2-29 03:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yhshiro
初级用户





积分 130
发帖 59
注册 2007-12-25
状态 离线
『第 5 楼』:  

就把我上面的改一下 加个排除的目录就可以了啊!~还有排除目录的下级目录也一起删除.......

好像这代码太麻烦了....

2008-2-29 04:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 6 楼』:  

@echo off
:st
cls
SET tt=3
SET ph=d:\
SET phd=下载
set p1=%date:~0,4%
set p2=%date:~5,2%
set p3=%date:~8,2%
setlocal enabledelayedexpansion
for /l %%a in (1,1,3) do (
for /f "delims=0 tokens=*" %%i in ("!p%%a!") do set p%%a=%%i
)
if %p3% gtr %TT%  goto ppp
:nxt
set/a p2-=1
if %p2% equ 0 set/a p1-=1&&set p2=12
SET/a PN1=%p1%%%4
set PN2=28
if %PN1% EQU 0 set pN2=29
for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3=%p3%+%%i
if %p3% leq %tt% goto nxt
:ppp
set/a p3=%p3%-%tt%
set p2=0%p2%
set p2=%p2:~-2,2%
set p3=0%p3%
set p3=%p3:~-2,2%
for /f "tokens=*" %%i in ('dir /b "%ph%"^|find /v "%phd%"') do call :loop "%%i"
for /f "tokens=*" %%i in ('dir /b /s /a-d "%ph%%phd%"') do set t=%%~ti&&call :loop1 "%%i"
pause
goto :eof
:loop1
IF %p1%%p2%%p3% gtr %t:~0,4%%t:~5,2%%t:~8,2% if not %1=="" del /a/q/f %1 2>nul&&goto :eof
:loop
if exist "%ph%%~1\" rd /s /q "%ph%%~1" 2>nul&&goto :eof
if exist "%ph%%~1" del /a/q/f "%ph%%~1" 2>nul

[ Last edited by terse on 2008-2-29 at 10:23 PM ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 yhshiro 分数: +2  时间:2008-3-1 21:22




简单!简单!再简单!
2008-2-29 14:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yhshiro
初级用户





积分 130
发帖 59
注册 2007-12-25
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by terse at 2008-2-29 02:03 PM:
@echo off
:st
cls
SET tt=3
SET ph=d:\
SET phd=下载
set p1=%date:~0,4%
set p2=%date:~5,2%
set p3=%date:~8,2%
setlocal enabledelayedexpansion
for /l %%a in (1,1,3) do (
for /f "deli ...

系统找不到指定的文件。
找不到 C:\Documents and Settings\Administrator\桌面\人
找不到文件
文件名、目录名或卷标语法不正确。
请按任意键继续. . .

2008-2-29 15:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by yhshiro at 2008-2-29 15:54:
系统找不到指定的文件。
找不到 C:\Documents and Settings\Administrator\桌面\人
找不到文件
文件名、目录名或卷标语法不正确。
请按任意键继续. . .

对于这样的提示  现不明白你那边环境
重新改一下6楼代码  再 试一下  建议备份原文件



简单!简单!再简单!
2008-2-29 22:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yhshiro
初级用户





积分 130
发帖 59
注册 2007-12-25
状态 离线
『第 9 楼』:  

谢谢哈~

2008-3-1 21:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
halby
初级用户





积分 24
发帖 11
注册 2008-4-8
状态 离线
『第 10 楼』:  

谢谢哈~

2008-4-15 00:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
halby
初级用户





积分 24
发帖 11
注册 2008-4-8
状态 离线
『第 11 楼』:  

收到啊

2008-4-15 00:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zyroy000
初级用户





积分 30
发帖 13
注册 2005-12-6
状态 离线
『第 12 楼』:  

这个用起来可要小心了

2008-4-23 15:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: