中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 这个问题该怎么用批处理解决呢(重复文件的删除问题)
作者:
标题: 这个问题该怎么用批处理解决呢(重复文件的删除问题) 上一主题 | 下一主题
tommy725
初级用户





积分 36
发帖 14
注册 2007-3-31
状态 离线
『楼 主』:  这个问题该怎么用批处理解决呢(重复文件的删除问题)

大家能帮我看看这个问题用批处理编程如何解决吗?
比如在一个文件夹里我有一些.mp3和.mpga的文件.但个别.mp3文件和.mpga重名.我希望在这个文件夹下删除和.mp3重名的.mpga文件.
请看列子(重复的.mpga红的文件删除)
Alison Krauss - Looking in the Eyes of Love.mp3
Alison Krauss - No Place to Hide.mp3
Alison Krauss - Pain of a Troubled Life.mp3
Alison Krauss - So Long, So Wrong.mp3
Alison Krauss - The Road Is a Lover.mp3
Alison Krauss - There Is a Reason.mp3
Alison Krauss & Union Station - It Doesn't Matter.mp3
Alison Krauss & Union Station - It Doesn't Matter.mpga
BabyNowThatIveFoundYou.mp3
BabyNowThatIveFoundYou.mpga
ForgetAboutIt.mp3
ForgetAboutIt.mpga
IWill.mp3
IWill.mpga
Stay.mp3
Stay.mpga
thanks.mpga
for.mpga
your.mpga
help.mp3

我做了个test,把以上文件名拷贝到纪事本里以 list.txt保存,然后用以下代码生成以上文件名的测试文件:
for /f "delims=" %%i in (list.txt) do @echo>%%i
[ Last edited by tommy725 on 2007-4-10 at 10:53 PM ]

2007-4-11 11:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


试试这个,没有考虑文件大小是否相同。
@echo off&Setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir /b/a-d *.mp3 *mpga') do (
        if not defined "%%~na" (set ""%%~na"=Batcher") else (
                if /i "%%~xa"==".mpga" del "%%~nxa"
        )
)


2007-4-11 11:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tommy725
初级用户





积分 36
发帖 14
注册 2007-3-31
状态 离线
『第 3 楼』:  

文件大小相同不重要,只要能删掉重复的.mpga就好。我试一下,先谢了:)

2007-4-11 11:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
20080610
初级用户





积分 83
发帖 34
注册 2006-11-24
状态 离线
『第 4 楼』:  

直接删就可以了.
for /f "delims=" %%a in ('dir/b *.mp3') do @del "%%~na.mpga" 2>nul


   此帖被 +10 点积分      点击查看详情   
评分人:【 lxmxn 分数: +4  时间:2007-4-11 12:28
评分人:【 flyinspace 分数: +4  时间:2007-4-11 12:34
评分人:【 logictianjin 分数: +2  时间:2007-4-12 03:08


2007-4-11 12:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tommy725
初级用户





积分 36
发帖 14
注册 2007-3-31
状态 离线
『第 5 楼』:  

直接删会把不和.mp3重复的.mpga文件也删除吗?
请问结尾2>nul什么意思

[ Last edited by tommy725 on 2007-4-10 at 11:21 PM ]

2007-4-11 12:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
20080610
初级用户





积分 83
发帖 34
注册 2006-11-24
状态 离线
『第 6 楼』:  

句柄论坛有不少介绍的帖子了.
下面这个就可以不用.
for /f "delims=" %%a in ('dir/b *.mp3') do @if exist "%%~na.mpga" del "%%~na.mpga"


2007-4-11 12:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  


Re 20080610:

兄的方法比较巧妙,赞一个。


2007-4-11 12:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 8 楼』:  

Re 20080610:

呵呵,看来我迂腐了。。我刚刚把脚本写出来。
不过只是限制于从文本中提出文件名。然后提示那些是重复的文件名。。

脚本就不献丑了。



知,不觉多。不知,乃求知
2007-4-11 12:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
htysm
高级用户




积分 866
发帖 415
注册 2005-12-4
状态 离线
『第 9 楼』:  

这段代码确实漂亮,干练。

2007-4-12 00:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
logictianjin
初级用户





积分 58
发帖 25
注册 2006-11-29
状态 离线
『第 10 楼』:  

re 20080610

2段代码真是漂亮 ,把所学融会贯通,羡慕中!!!

lxmxn兄看来是把问题复杂话了,我看到FOR的那些括号就晕,哈哈!!!!!

2007-4-12 03:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: