Board logo

标题: 这个问题该怎么用批处理解决呢(重复文件的删除问题) [打印本页]

作者: tommy725     时间: 2007-4-11 11:15    标题: 这个问题该怎么用批处理解决呢(重复文件的删除问题)

大家能帮我看看这个问题用批处理编程如何解决吗?
比如在一个文件夹里我有一些.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 ]
作者: lxmxn     时间: 2007-4-11 11:50

试试这个,没有考虑文件大小是否相同。
@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"
        )
)

作者: tommy725     时间: 2007-4-11 11:52
文件大小相同不重要,只要能删掉重复的.mpga就好。我试一下,先谢了:)
作者: 20080610     时间: 2007-4-11 12:02
直接删就可以了.
for /f "delims=" %%a in ('dir/b *.mp3') do @del "%%~na.mpga" 2>nul

作者: tommy725     时间: 2007-4-11 12:05
直接删会把不和.mp3重复的.mpga文件也删除吗?
请问结尾2>nul什么意思

[ Last edited by tommy725 on 2007-4-10 at 11:21 PM ]
作者: 20080610     时间: 2007-4-11 12:28
句柄论坛有不少介绍的帖子了.
下面这个就可以不用.
for /f "delims=" %%a in ('dir/b *.mp3') do @if exist "%%~na.mpga" del "%%~na.mpga"

作者: lxmxn     时间: 2007-4-11 12:30

Re 20080610:

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

作者: flyinspace     时间: 2007-4-11 12:38
Re 20080610:

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

脚本就不献丑了。
作者: htysm     时间: 2007-4-12 00:56
这段代码确实漂亮,干练。
作者: logictianjin     时间: 2007-4-12 03:12
re 20080610

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

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