![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 18:48 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 一个关于数据删除的问题请教. |
| 可打印版本 3,411 / 50 |
| 第1楼 fzp1978321 | 发表于 2008-02-01 21:05 |
| 初级用户 发帖 50 积分 110 | |
|
一个关于数据删除的问题请教. 在D:\下,如何在下一周的周一,删除上周周一所生成的文件(包含该路径下各级文件夹下上周一所生成的文件,前提是各级文件夹不被删除)?
我知道用 DEL /S/Q/F 可以清空该路径下的所有文件,但是我又如何实现清除指定时间的文件呢? 我是做了个计划任务,每周的某天删除上周对应某天的数据(如下周一时删除上周一的文件,下周二删除上周二的文件),其他数据不动. 在这个问题上面卡住了,希望得到解答. |
|
| 第2楼 fzp1978321 | 发表于 2008-02-01 21:38 |
| 初级用户 发帖 50 积分 110 | |
|
没人能解答么?
|
|
| 第3楼 slore | 发表于 2008-02-01 22:01 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
时间是文件名有规律?还是创建时间?
|
|
| 第4楼 fzp1978321 | 发表于 2008-02-01 22:08 |
| 初级用户 发帖 50 积分 110 | |
|
文件名不规律,因为每天生成文件的个数和多少并不固定,所以是根据创建时间来进行删除.
哎,简直拿它没招了,呵呵. 另,系统是WIN2000 [ Last edited by fzp1978321 on 2008-2-1 at 10:21 PM ] |
|
| 第5楼 fzp1978321 | 发表于 2008-02-01 23:03 |
| 初级用户 发帖 50 积分 110 | |
|
这个问题真的就那么难?!盼高手解答.
|
|
| 第6楼 slore | 发表于 2008-02-01 23:09 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
for中的%~tI得到的是修改时间。。。
DIR可以得到 创建时间,但是。。。路径不能写完整路径。。 如果dir一边,在把文件一个个的dir一边……可以。。。 但是你整个D盘。。。处理起来。。。。 记得论坛原来有人做个类似找不到了。。。。 难不难,感觉写的代码复杂。以前没处理过时间的……也觉得处理时间麻烦。 |
|
| 第7楼 fzp1978321 | 发表于 2008-02-01 23:40 |
| 初级用户 发帖 50 积分 110 | |
|
在这我说明下,我说的D:其实是个映射的文件夹,里边有许多文件和目录,目录内又有些子目录.
其实我备份已经做出来了,每天生成的数据按照原来的路径格式压缩后不超过30M. 其实我觉得把每天生成的文件都备份了其实就行了,然后一周删除一次源路径下的源文件;但是又被要求必须是像在下一周的周一才能删除上一个周一的数据这样的方式来删除文件.我觉得这样很多余,并且很很无奈. 所以才在这上面寻求帮助. |
|
| 第8楼 slore | 发表于 2008-02-02 02:22 |
| 铂金会员 发帖 2,478 积分 5,212 | |
| 第9楼 slore | 发表于 2008-02-02 02:23 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
如果是修改日期的就用这个就行了。貌似%%~tI得到的是修改日期。
如果你的文件的创建日期和修改一样,按那个上面的代码就行了。 如果不一样再说吧~ 肯定是可以,就是觉得麻烦。:( |
|
| 第10楼 fzp1978321 | 发表于 2008-02-03 01:15 |
| 初级用户 发帖 50 积分 110 | |
|
谢谢SLORE的帮助.
那个帖子我看了,好象是在WINXP下的,在WIN2000XIA能用么? 还有,里边我发现有两个程序,该用哪一个? |
|
| 第11楼 terse | 发表于 2008-02-03 14:16 |
| 银牌会员 发帖 946 积分 2,404 | |
|
删除任意天数文件 环境 XP 试一下可以否
@echo off SET/p TT=天数: SET/p PH=路径: 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% set/a p3=%p3%-%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 set/a p3=%p3%-%tt% :ppp set p2=0%p2% set p2=%p2:~-2,2% set p3=0%p3% set p3=%p3:~-2,2% for %%i in ("%PH%\*") do set t=%%~ti &&call :loop "%%~fi" pause goto :eof :loop if not "%~1" == "%~f0" ( IF %p1%%p2%%p3% equ %t:~0,4%%t:~5,2%%t:~8,2% del "%~1" /S/Q/F ) ::抱歉 漏一标签 [ Last edited by terse on 2008-2-4 at 03:10 AM ] |
|
| 第12楼 fzp1978321 | 发表于 2008-02-03 19:48 |
| 初级用户 发帖 50 积分 110 | |
|
我在XP上运行了下,是删除C:\1002里7天前的文件,在CMD.EXE如下显示:
7: C:\1002 'NEX'不是内部或外部命令,也不是可运行的程序 或批处理文件 找不到操作数 20080133 (以上每一行都需要按任意键才逐行显示的) 在CMD.EXE显示完后,我再安任意键,会弹出个名为"CMD.TXT"的文本文件,内容如下: bugreport.qq.comToolVer=1.0&AppName=QQ&AppBuild=17290440&ErrAdd=03d540a8&OSId=00000002&OSMajVer=00000005&OSMinVer=00000001&OSBuildNo=00000A28&UIN=195690504&CrashInfo=1h%2FTuhJl4flo4g4Cnqbt%2BTdEOTQ1NjQ3&cmd=1&UserDescription= 这是什么意思啊,看不明白. |
|
| 第13楼 fzp1978321 | 发表于 2008-02-03 21:48 |
| 初级用户 发帖 50 积分 110 | |
|
这个问题有点急,希望能有人能完整详细的帮我下,谢谢!
|
|
| 第14楼 fastslz | 发表于 2008-02-03 22:04 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
回头我到win2000下写个代码给你
|
|
| 第15楼 fzp1978321 | 发表于 2008-02-03 22:06 |
| 初级用户 发帖 50 积分 110 | |
|
谢谢
|
|
| 1 2 3 4 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |