2011-12-11 56 views
0

該應用程序在我的HDD中創建了所有多媒體文件的.mta文件(名稱完全相同)。我想要做的是檢查根文件夾的所有子文件夾,如果沒有與某些.mta關聯的多媒體文件,則刪除它。刪除沒有與其關聯的「sample.ext」文件的「sample.ext.ext2」文件

詳細示例。比方說,我們有文件

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 

回答

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應該達到你的目標。

+0

請編輯我的cmd文件代碼。我不知道該怎麼做 –

+0

你的函數也不會遞歸地工作 –