删除没有与之关联的“sample.ext”文件的“sample.ext.ext2”文件

时间:2011-12-11 12:24:49

标签: windows file batch-file cmd

应用程序为我的HDD中的所有多媒体文件创建.mta个文件(名称完全相同)。我想要做的是检查根文件夹的所有子文件夹,如果没有与某些.mta关联的多媒体文件,则删除它。

详细示例。假设我们有文件

01.mp3
01.MP3.mta
02.mkv
02.MKV.mta
03.jpg
03.JPG.mta
04.MP4.mta     <<==

如您所见,上一个.mta没有原始文件。我想删除最后一个文件。

我不知道是否可以使用cmd。但是以下功能不起作用。请看一下

For /r %%i in (*.mta) do call :nomta %%i
pause

goto end

:nomta
set stem=%1:.mta=%

set original=%stem%.mta
if not exist %original% do exit /B
if not exist %stem% do del /a /Q  %1

goto :EOF 

:end

echo done
PAUSE

1 个答案:

答案 0 :(得分:0)

您可以使用for命令执行此操作,dir /a将隐藏和非隐藏文件名提供给它。这是一个例子:

C:\temp\z\z>attrib *
A            C:\temp\z\z\foo.bar.mta
A   H        C:\temp\z\z\h2.mp4.mta
A            C:\temp\z\z\hid.mp4
A   H        C:\temp\z\z\hid.mp4.mta
A            C:\temp\z\z\zoo.bar
A            C:\temp\z\z\zoo.bar.mta

C:\temp\z\z>for /f %F in ('dir /b/a *.mta') do if not exist "%~nF" echo %F >> z

C:\temp\z\z>type z
foo.bar.mta
h2.mp4.mta

所以用del替换echo应该达到你的目标。