中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
作者:
标题: 删除某一天的文件夹! 上一主题 | 下一主题
xiaohacker
初级用户




积分 110
发帖 45
注册 2007-1-7
状态 离线
『楼 主』:  删除某一天的文件夹!

xiaohacker想将某一天(指定的日期)生成的文件全部删除!不知道怎么做这个批处理!请大侠门高抬贵手!帮我写一个这样的批处理!谢谢!


2007-3-7 11:15
查看资料  发短消息  网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 2 楼』:  

@echo off setlocal enabledelayedexpansion set /p inputdate=请输入日期(yyyy-mm-dd): for /f "tokens=1,4" %%i in ('dir /a /s') do ( set date=%%i set name=%%j if "!date!"=="!inputdate!" echo !name! ) pause 子目录的文件只能显示文件名,找不到路径!!! [ Last edited by xycoordinate on 2007-3-7 at 11:14 AM ]


2007-3-7 23:51
查看资料  发送邮件  发短消息  网志  OICQ (226308607)  编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 3 楼』:  看第7楼!!!

@echo off setlocal enabledelayedexpansion set /p idate=请输入日期(yyyy-mm-dd): set /p idir=请输入目录(绝对路径): for /f "tokens=1,4" %%i in ('dir /a /s !idir!') do ( set str=%%i set var=%%j if "!str!"=="!idate!" ( if not "!var!"=="." ( if not "!var!"==".." ( echo !var! ) ) ) ) pause 修改了一下,排除掉文件:"." 和".." 如果你用del . 或del .. [ Last edited by xycoordinate on 2007-3-7 at 08:52 PM ]


2007-3-8 00:54
查看资料  发送邮件  发短消息  网志  OICQ (226308607)  编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 4 楼』:  

《[求助]判断变量长度》 www.cn-dos.net/forum/viewthrea ... 如果有strings命令或”%@len“的话!!! 在哪儿可以下载到!!! @echo off setlocal enabledelayedexpansion set /p idate=请输入日期(yyyy-mm-dd): set /p idir=请输入目录(绝对路径): set length=%@len[%idir%] rem 在不你就自己输入路径长度 rem set /p length=请输入路径长度(注:1个汉字长度为1) for /f "tokens=1,3,4" %%i in ('dir /a /s !idir!') do ( set str=%%i set sub=%%j set var=%%k if "!str:~0,%length%!"=="!idir!" ( set fpaht=!str! ) if "!str!"=="!idate!" ( if not "!sub!"=="<DIR>" ( if not "!var!"=="." ( if not "!var!"==".." ( echo !fpaht!^\!var! ) ) ) ) ) pause [ Last edited by xycoordinate on 2007-3-7 at 08:36 PM ]


2007-3-8 01:53
查看资料  发送邮件  发短消息  网志  OICQ (226308607)  编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 5 楼』:  看第7楼!!!

E:\>dir /s /a e:\DOS\111\科技 >e:\dir.txt E:\>type e:\dir.txt
驱动器 E 中的卷没有标签。 卷的序列号是 70AE-C2D5 e:\DOS\111\科技 的目录 2006-03-07 13:10 <DIR> . 2006-03-07 13:10 <DIR> .. 2006-03-07 10:54 3 111.txt 2007-02-05 11:24 <DIR> 123 2006-03-07 10:54 3 222.txt 2007-02-04 13:15 <DIR> abc 2006-03-07 12:37 <DIR> 夏天 2 个文件 6 字节 e:\DOS\111\科技\123 的目录 2007-01-02 11:24 <DIR> . 2007-01-02 11:24 <DIR> .. 2006-03-07 10:54 3 a.txt 2006-03-07 10:54 3 b.txt 2 个文件 6 字节 e:\DOS\111\科技\abc 的目录 2007-02-06 13:15 <DIR> . 2007-02-06 13:15 <DIR> .. 2007-02-06 12:16 5 1.txt 2006-03-07 10:54 3 2.txt 2 个文件 8 字节 e:\DOS\111\科技\夏天 的目录 2006-03-07 12:37 <DIR> . 2006-03-07 12:37 <DIR> .. 2006-03-07 12:37 3 x.txt 2006-03-07 12:38 8 y.txt 2 个文件 11 字节 所列文件总数: 8 个文件 31 字节 11 个目录 10,531,729,408 可用字节
test.bat
@echo off setlocal enabledelayedexpansion set /p idate=请输入日期(yyyy-mm-dd): set /p idir=请输入目录(绝对路径): for /f "tokens=1,3,4" %%I in ('dir /a /s !idir!') do ( set var1=%%~dpnI if "!var1!"=="!idir!" set fpath=!idir! set var2=%%~dpI if "!var2!"=="!idir!\" set fpath=!idir!\%%~nI set str1=%%I set str2=%%J set str3=%%K if "!str1!"=="!idate!" ( if not "!str2!"=="<DIR>" ( if not "!str3!"=="." ( if not "!str3!"==".." ( echo !fpath!^\!str3! ) ) ) ) )
请大家看看! E:\>test 请输入日期(yyyy-mm-dd):2006-03-07 请输入目录(绝对路径):E:\DOS\111\科技
E:\DOS\111\科技\111.txt E:\DOS\111\科技\222.txt E:\DOS\111\科技\123\a.txt E:\DOS\111\科技\123\b.txt E:\DOS\111\科技\abc\2.txt E:\DOS\111\科技\夏天\x.txt E:\DOS\111\科技\夏天\y.txt
判断目录那里还有问题!!! set var1=%%~dpnI if "!var1!"=="!idir!" set fpath=!idir! set var2=%%~dpI if "!var2!"=="!idir!\" set fpath=!idir!\%%~nI 只能匹配要查询的目录下(如E:\DOS\111\科技)的一层子目录! 如果有几层,文件能找到,但子目录名就会错误! 还是能有string命令好!!! 还有如果E:\DOS\111\科技,输入为e:\dos\111\科技是找不到的!? 怎么才能忽略大小写字母??? [ Last edited by xycoordinate on 2007-3-7 at 08:51 PM ]


2007-3-8 05:17
查看资料  发送邮件  发短消息  网志  OICQ (226308607)  编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 6 楼』:  

if的命令那里加上/I参数可以忽略字符串的大小写,在if /?里面可以查看到


2007-3-8 06:38
查看资料  发短消息  网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 7 楼』:  请大家帮我检查检查!!!

Originally posted by dikex at 2007-3-7 17:38: if的命令那里加上/I参数可以忽略字符串的大小写,在if /?里面可以查看到
谢谢!! 再修改test.bat
@echo off setlocal enabledelayedexpansion set /p idate=请输入日期(yyyy-mm-dd): set /p idir=请输入目录(绝对路径): for /f "tokens=1,3,4" %%I in ('dir /a /s !idir!') do ( set str1=%%I set str2=%%J set str3=%%K if /i "!str1!"=="!idir!" set fpath=!idir! rem 绝对路径肯定有盘符!!! if /i "!str1:~0,2!"=="!idir:~0,2!" set fpath=!str1! if "!str1!"=="!idate!" ( if not "!str2!"=="<DIR>" ( if not "!str3!"=="." ( if not "!str3!"==".." ( set fname=!fpath!\!str3! echo !fname! ) ) ) ) )
但是,会出现“f:\\study3.bat”的情况!!!
请输入日期(yyyy-mm-dd):2007-03-07 请输入目录(绝对路径):f:\ f:\\指定日期文件.rar f:\\study3.bat f:\\dir.txt f:\\study.bat f:\\study2.bat f:\Recycled\INFO2 f:\Recycled\Df1.bat f:\Recycled\Df2.bat f:\zdrq\1.txt f:\zdrq\path.txt f:\zdrq\study2.bat f:\zdrq\test.bat f:\zdrq\test5.bat f:\zdrq\study3.bat f:\zdrq\dir.txt f:\zdrq\科技\夏天\path.txt f:\zdrq\科技\夏天\study.txt ......
再加一点: if /i "!str1!"=="!idir!" set fpath=!idir! if /i "!str1:~0,2!"=="!idir:~0,2!" set fpath=!str1! if "!fpath:~-1!"=="\" set fpath=!fpath:~0,-1! 解决出现“f:\\study3.bat”的情况!!! 请大家帮我测试一下!!! 如果if not "!str2!"=="<DIR>" 不加,可以显示子目录名注意:目录名中间不能有空格!!! [ Last edited by xycoordinate on 2007-3-8 at 11:00 AM ]


2007-3-8 07:30
查看资料  发送邮件  发短消息  网志  OICQ (226308607)  编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 8 楼』:  

echo off cls set /p a=请输入要删除的完整文件明: for %%i in (c,d,e,f) do del /f /s /q %%i:\"%a%" 2>nul pause [ Last edited by zhoushijay on 2007-3-7 at 06:54 PM ]


2007-3-8 07:49
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 9 楼』:  dir /a-d /s

F:\zdrq\科技>dir /a-d /s
驱动器 F 中的卷没有标签。 卷的序列号是 9487-0809 F:\zdrq\科技 的目录 2006-03-07 10:54 3 111.txt 2006-03-07 10:54 3 222.txt 2007-03-07 21:48 175 test.bat 2004-08-23 16:00 470,528 cmd.exe 2007-03-07 21:52 203 test1.bat 5 个文件 470,912 字节 F:\zdrq\科技\夏天 的目录 2007-03-07 12:31 350 path.txt 2007-03-07 15:25 112 study.txt 2006-03-07 12:38 3 x.txt 2006-03-07 12:38 8 y.txt 4 个文件 473 字节 。。。。。。
dir /a-d /s比dir /a /s强的多!!!
@echo off setlocal enabledelayedexpansion rem set /p idate=请输入日期(yyyy-mm-dd): rem set /p idir=请输入目录(绝对路径): echo 在%idir%目录中,符合%idate%的文件: for /f "tokens=1,3,4" %%I in ('dir /a-d /s !idir!') do ( set str1=%%I set str2=%%J set str3=%%K if /i "!str1!"=="!idir!" set fpath=!idir! if /i "!str1:~0,2!"=="!idir:~0,2!" set fpath=!str1! if "!fpath:~-1!"=="\" set fpath=!fpath:~0,-1! if "!str1!"=="!idate!" ( set fname=!fpath!\!str3! echo !fname! ) )
[ Last edited by xycoordinate on 2007-3-8 at 10:59 AM ]


2007-3-8 11:06
查看资料  发送邮件  发短消息  网志  OICQ (226308607)  编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 10 楼』:  

《[求助]判断变量长度》 www.cn-dos.net/forum/viewthrea ... 怎么一使用string和lmod,CMD就变成english版的呢???
@echo off setlocal enabledelayedexpansion set /p idate=请输入日期(yyyy-mm-dd): set /p idir=请输入目录(绝对路径): strings length %idir% |lmod /L set /a length=[]-1 >tmp.bat call tmp.bat for /f "tokens=1,3,4" %%i in ('dir /a /s !idir!') do ( set str=%%i set sub=%%j set var=%%k if "!sub:~0,%length%!"=="!idir!" ( set fpaht=!sub! ) if "!str!"=="!idate!" ( if not "!sub!"=="<DIR>" ( if not "!var!"=="." ( if not "!var!"==".." ( echo !fpaht!^\!var! ) ) ) ) ) pause
[ Last edited by xycoordinate on 2007-3-14 at 05:34 PM ]


2007-3-15 05:57
查看资料  发送邮件  发短消息  网志  OICQ (226308607)  编辑帖子  回复  引用回复

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


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



论坛跳转: