【问题标题】:Removing a "sample.ext.ext2" file that has no "sample.ext" file associated with it删除没有关联的“sample.ext”文件的“sample.ext.ext2”文件
【发布时间】:2011-12-11 12:24:48
【问题描述】:

该应用程序为我的硬盘中的所有多媒体文件创建.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

【问题讨论】:

    标签: windows file batch-file cmd


    【解决方案1】:

    您可以使用 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 应该可以实现您的目标。

    【讨论】:

      猜你喜欢
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 2021-12-13
      相关资源
      最近更新 更多