![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 11:00 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请问如何把目录下所有不在过虑列表文件中的文件删除? |
| 可打印版本 2,207 / 17 |
| 第1楼 dejoy | 发表于 2008-11-09 01:58 |
| 初级用户 发帖 64 积分 76 | |
|
请问如何把目录下所有不在过虑列表文件中的文件删除? 有一个目录,结构如下:
. └─GExperts ├─ExternalSource │ ├─Abbrevia │ └─UniSynEdit ├─Images └─Source ├─BackupProject ├─ClassBrowser ├─ClipboardHistory ├─CodeLibrarian ├─CodeProofreader ├─Editor ├─EditorToolbar ├─Experts ├─FavoriteFiles ├─Framework ├─Grep ├─IDE ├─IDEDocking │ └─Sample ├─MacroLibrary ├─MacroTemplates ├─MessageDialog ├─OpenFile ├─ProcedureList ├─ProjectDependencies ├─ProjectOptionSets ├─RenameComponents ├─ReplaceComponents ├─SampleExperts ├─SetComponentProperties ├─SourceExport ├─StandAlone │ ├─CodeLibrarian │ ├─DebugWindow │ ├─ExpertManager │ └─Grep ├─ToDoList └─Utils 目录里面包含完整的文件,现在想把不包含在一个已知过滤列表文件Filter.txt中的文件剔除掉(可以直接删除,但为了对比有那些被过滤,所以最好在原文件名后加'_',如xxx.pas不在filter.txt中,则重命名为xxx.pas_),需要处理所有子目录中文件.请问应该如何写BAT? 过滤列表文件Filter.txt内容如下: AbArcTyp.pas AbConst.pas AbDfBase.pas AbDfCryS.pas AbDfEnc.pas GX_About.pas GX_ActionBroker.pas GX_Actions.pas ....... dmSharedImages.dfm fmAbout.dfm fmAlign.dfm fmAlignOptions.dfm fmAsciiChart.dfm fmBackup.dfm fmBackupConfig.dfm fmBackupOptions.dfm .......... |
|
| 第2楼 VAF | 发表于 2008-11-09 02:50 |
| 中级用户 发帖 134 积分 242 | |
|
如果你是为了研究批处理, 请继续研究.
如果你想实用, 一个叫 PDEL.EXE 的程序应该可完成任务. |
|
| 第3楼 dejoy | 发表于 2008-11-09 02:59 |
| 初级用户 发帖 64 积分 76 | |
|
谢谢,我是实用+顺便学习研究. pdel.exe的我google过了,找不到那儿下载.
还请教如何达到标题的目的? [ Last edited by dejoy on 2008-11-9 at 03:19 ] |
|
| 第4楼 VAF | 发表于 2008-11-09 03:25 |
| 中级用户 发帖 134 积分 242 | |
|
看能否给你个
附件上传成功 PDEL 空参数会显示用法帮助. [ Last edited by VAF on 2008-11-9 at 03:31 ] 附件 PDEL.ZIP (46.81 KiB) |
|
| 第5楼 dejoy | 发表于 2008-11-09 05:20 |
| 初级用户 发帖 64 积分 76 | |
|
谢谢,我仔细看了,不过好像没有能实现我标题的参数?请教楼上的应该使用什么参数实现?
|
|
| 第6楼 VAF | 发表于 2008-11-09 05:43 |
| 中级用户 发帖 134 积分 242 | |
|
你的 Filter.txt 应更名为 PDEL.EXC
并须与 PDEL.EXE 在同一目录中. 且最好以全称路径描述你要排除的文件, 一行一个文件地说. PDEL /EX 另根据需要还可加上其它参数, 如: /NC /RE /NM /NS /NW /EQ /BA ......等. [ Last edited by VAF on 2008-11-9 at 05:52 ] |
|
| 第7楼 dejoy | 发表于 2008-11-09 05:52 |
| 初级用户 发帖 64 积分 76 | |
|
不行啊,帮助中就没有EX这个参数,我按你的方法,执行pdel cw /EX,结果弹出一个窗口,are you sure to del *.* y/n? 结果Y把CW整个目录下的文件都删除了,并没有排除PDEL.EXC中的文件;N呢什么也不做.
|
|
| 第8楼 VAF | 发表于 2008-11-09 06:05 |
| 中级用户 发帖 134 积分 242 | |
|
/EX 参数有的, 在第11行吗, 做实验前应用备份做, 以免造成损失.
你的应用我实际应用过, 命令用法正确的话不会发生错误的. |
|
| 第9楼 pusofalse | 发表于 2008-11-09 06:06 |
| 银牌会员 发帖 646 积分 1,604 | |
|
放到GExperts所在目录中,如果输出正确 就把第4行的echo去掉。。。 |
|
| 第10楼 VAF | 发表于 2008-11-09 06:19 |
| 中级用户 发帖 134 积分 242 | |
|
高手来了.
晕 我就是搞不掂 for |
|
| 第11楼 dejoy | 发表于 2008-11-09 07:32 |
| 初级用户 发帖 64 积分 76 | |
|
呵呵 我也是知道用for应该是能搞定的,我也是就不会用for
楼上的高手,你的还是不行啊,按你的方法,我运行后生成一个tmp.txt,内容如下: offcd. /r GExperts\ %a in (*) do echo %afor /f "delims=" %a in ('findstr /veg:filter.txt tmp.txt') do echo del /f "%a"del tmp.txtpause 不知何故. 我不会用for,不过好像应该可以直接用for .... in (Filter.txt) ....这样直接读取文件内容么? 再加一小点要求,把bat和filter.txt放到被执行的目录里不太好办,因为整个目录里的文件都要被操作(删除或重命名,如果成功BAT本身就挂了)最好是能放在外部,指定为参数,如 d:\temp\XXX.bat e:\GExperts e:\t\Filter.txt [ Last edited by dejoy on 2008-11-9 at 07:44 ] |
|
| 第12楼 ZJHJ | 发表于 2008-11-09 09:30 |
| 高级用户 发帖 374 积分 609 | |
|
批处理完全可以做到删除列表以外的文件。
1 如果列表中没有路径,则要搜索路径 2 搜索当前所有文件路径 3 对比二个列表,将不在列表1的文件删除。 |
|
| 第13楼 pusofalse | 发表于 2008-11-09 17:21 |
| 银牌会员 发帖 646 积分 1,604 | |
|
Re 11: 不可能不行,我在我电脑里测试通过的。。。。
的确是要生成个tmp.txt, 里面的内容是GExperts\下级的文件列表。。。 是你的使用方法问题。存为批处理,放到GExperts\同级目录中(filter.txt同是),双击。。 |
|
| 第14楼 dejoy | 发表于 2008-11-09 21:14 |
| 初级用户 发帖 64 积分 76 | |
|
我就是这么做的啊,唯一的不同的是我不是直接点击,而是在DOS窗口下进入此目录后执行BAT
|
|
| 第15楼 dejoy | 发表于 2008-11-12 00:03 |
| 初级用户 发帖 64 积分 76 | |
|
继续呼叫大大
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |