中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-04 03:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 这个问题该怎么用批处理解决呢(重复文件的删除问题) 查看 1,009 回复 9
楼 主 这个问题该怎么用批处理解决呢(重复文件的删除问题) 发表于 2007-04-11 11:15 ·  德国
初级用户
积分 36
发帖 14
注册 2007-03-31 17:31
19年会员
UID 83522
性别 男
状态 离线
大家能帮我看看这个问题用批处理编程如何解决吗?
比如在一个文件夹里我有一些.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 ]
2 发表于 2007-04-11 11:50 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线

试试这个,没有考虑文件大小是否相同。

@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"
)
)

3 发表于 2007-04-11 11:52 ·  德国
初级用户
积分 36
发帖 14
注册 2007-03-31 17:31
19年会员
UID 83522
性别 男
状态 离线
文件大小相同不重要,只要能删掉重复的.mpga就好。我试一下,先谢了:)
4 发表于 2007-04-11 12:02 ·  中国 北京 联通
初级用户
积分 83
发帖 34
注册 2006-11-24 10:50
19年会员
UID 71574
性别 男
状态 离线
直接删就可以了.


for /f "delims=" %%a in ('dir/b *.mp3') do @del "%%~na.mpga" 2>nul
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
lxmxn +4 2007-04-11 12:28
flyinspace +4 2007-04-11 12:34
logictianjin +2 2007-04-12 03:08
5 发表于 2007-04-11 12:05 ·  德国
初级用户
积分 36
发帖 14
注册 2007-03-31 17:31
19年会员
UID 83522
性别 男
状态 离线
直接删会把不和.mp3重复的.mpga文件也删除吗?
请问结尾2>nul什么意思

[ Last edited by tommy725 on 2007-4-10 at 11:21 PM ]
6 发表于 2007-04-11 12:28 ·  中国 北京 联通
初级用户
积分 83
发帖 34
注册 2006-11-24 10:50
19年会员
UID 71574
性别 男
状态 离线
句柄论坛有不少介绍的帖子了.
下面这个就可以不用.


for /f "delims=" %%a in ('dir/b *.mp3') do @if exist "%%~na.mpga" del "%%~na.mpga"
7 发表于 2007-04-11 12:30 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线

Re 20080610:

兄的方法比较巧妙,赞一个。
8 发表于 2007-04-11 12:38 ·  中国 广东 广州 联通
银牌会员
★★★
积分 1,206
发帖 517
注册 2007-03-25 01:18
19年会员
UID 82819
性别 男
状态 离线
Re 20080610:

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

脚本就不献丑了。
知,不觉多。不知,乃求知
9 发表于 2007-04-12 00:56 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
20年会员
UID 46459
状态 离线
这段代码确实漂亮,干练。
10 发表于 2007-04-12 03:12 ·  中国 天津 电信
初级用户
积分 58
发帖 25
注册 2006-11-29 13:11
19年会员
UID 72096
性别 男
状态 离线
re 20080610

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

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