中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-10 10:03
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请问如何把目录下所有不在过虑列表文件中的文件删除? 查看 2,205 回复 17
楼 主 请问如何把目录下所有不在过虑列表文件中的文件删除? 发表于 2008-11-09 01:58 ·  中国 云南 昆明 电信
初级用户
★★
积分 76
发帖 64
注册 2008-04-24 23:56
18年会员
UID 116884
性别 男
状态 离线
有一个目录,结构如下:
.
└─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 发表于 2008-11-09 02:50 ·  中国 河北 邢台 联通
中级用户
★★
积分 242
发帖 134
注册 2006-12-11 15:14
19年会员
UID 73203
性别 男
状态 离线
如果你是为了研究批处理, 请继续研究.

如果你想实用, 一个叫 PDEL.EXE 的程序应该可完成任务.
3 发表于 2008-11-09 02:59 ·  中国 云南 昆明 电信
初级用户
★★
积分 76
发帖 64
注册 2008-04-24 23:56
18年会员
UID 116884
性别 男
状态 离线
谢谢,我是实用+顺便学习研究. pdel.exe的我google过了,找不到那儿下载.
还请教如何达到标题的目的?

[ Last edited by dejoy on 2008-11-9 at 03:19 ]
4 发表于 2008-11-09 03:25 ·  中国 河北 邢台 联通
中级用户
★★
积分 242
发帖 134
注册 2006-12-11 15:14
19年会员
UID 73203
性别 男
状态 离线
看能否给你个

附件上传成功

PDEL
空参数会显示用法帮助.

[ Last edited by VAF on 2008-11-9 at 03:31 ]
附件
PDEL.ZIP (46.81 KiB, 下载次数: 19)
5 发表于 2008-11-09 05:20 ·  中国 云南 昆明 电信
初级用户
★★
积分 76
发帖 64
注册 2008-04-24 23:56
18年会员
UID 116884
性别 男
状态 离线
谢谢,我仔细看了,不过好像没有能实现我标题的参数?请教楼上的应该使用什么参数实现?
6 发表于 2008-11-09 05:43 ·  中国 河北 邢台 联通
中级用户
★★
积分 242
发帖 134
注册 2006-12-11 15:14
19年会员
UID 73203
性别 男
状态 离线
你的 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 发表于 2008-11-09 05:52 ·  中国 云南 昆明 电信
初级用户
★★
积分 76
发帖 64
注册 2008-04-24 23:56
18年会员
UID 116884
性别 男
状态 离线
不行啊,帮助中就没有EX这个参数,我按你的方法,执行pdel cw /EX,结果弹出一个窗口,are you sure to del *.* y/n? 结果Y把CW整个目录下的文件都删除了,并没有排除PDEL.EXC中的文件;N呢什么也不做.
8 发表于 2008-11-09 06:05 ·  中国 河北 邢台 联通
中级用户
★★
积分 242
发帖 134
注册 2006-12-11 15:14
19年会员
UID 73203
性别 男
状态 离线
/EX 参数有的, 在第11行吗, 做实验前应用备份做, 以免造成损失.

你的应用我实际应用过, 命令用法正确的话不会发生错误的.
9 发表于 2008-11-09 06:06 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
@echo off
cd.>tmp.txt
for /r GExperts\ %%a in (*) do echo>>tmp.txt %%a
for /f "delims=" %%a in ('findstr /veg:filter.txt tmp.txt') do echo del /f "%%a"
del tmp.txt
pause

放到GExperts所在目录中,如果输出正确 就把第4行的echo去掉。。。
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
10 发表于 2008-11-09 06:19 ·  中国 河北 邢台 联通
中级用户
★★
积分 242
发帖 134
注册 2006-12-11 15:14
19年会员
UID 73203
性别 男
状态 离线
高手来了.

我就是搞不掂 for
11 发表于 2008-11-09 07:32 ·  中国 云南 昆明 电信
初级用户
★★
积分 76
发帖 64
注册 2008-04-24 23:56
18年会员
UID 116884
性别 男
状态 离线
呵呵 我也是知道用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 发表于 2008-11-09 09:30 ·  中国 四川 泸州 联通
高级用户
★★★
积分 609
发帖 374
注册 2006-08-02 22:38
20年会员
UID 59720
状态 离线
批处理完全可以做到删除列表以外的文件。
1 如果列表中没有路径,则要搜索路径
2 搜索当前所有文件路径
3 对比二个列表,将不在列表1的文件删除。
13 Re 11: 发表于 2008-11-09 17:21 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
不可能不行,我在我电脑里测试通过的。。。。
的确是要生成个tmp.txt, 里面的内容是GExperts\下级的文件列表。。。
是你的使用方法问题。存为批处理,放到GExperts\同级目录中(filter.txt同是),双击。。
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
14 发表于 2008-11-09 21:14 ·  中国 云南 昆明 电信
初级用户
★★
积分 76
发帖 64
注册 2008-04-24 23:56
18年会员
UID 116884
性别 男
状态 离线
我就是这么做的啊,唯一的不同的是我不是直接点击,而是在DOS窗口下进入此目录后执行BAT
15 发表于 2008-11-12 00:03 ·  中国 云南 昆明 电信
初级用户
★★
积分 76
发帖 64
注册 2008-04-24 23:56
18年会员
UID 116884
性别 男
状态 离线
继续呼叫大大
论坛跳转: