【问题标题】:Batch to remove all files in folder + subfolder except some filetypes批量删除文件夹+子文件夹中的所有文件,但某些文件类型除外
【发布时间】:2015-05-04 14:51:29
【问题描述】:

我有一个包含数千个子文件夹的文件夹。 有很多文件,如 .cfg 或 .txt,是不必要的。

我只需要包含 .png 和 .jpg 文件的文件夹。 所以程序应该是:

  • 找到除 .png 和 .jpg 文件之外的所有文件并将其删除
  • 检查所有空文件夹并将其删除

我找到了以下代码:

How can I delete all files/subdirs except for some files in DOS?

如果我想添加 .png 和 .jpg,我需要添加什么?

attrib +r +s *.png
attrib +r +s *.jpg
del *.*
attrib -r -s *.bat
attrib -r -s *.jpg

似乎不起作用。我还需要文件夹删除器。

【问题讨论】:

    标签: batch-file file-extension subdirectory


    【解决方案1】:
    @echo off
    
    set the_dir=c:\dir_with_images
    pushd "%the_dir%"
    
    :: delete files that are not pictures
    for /f "tokens=* delims=" %%# in ('dir /b /s /a:-d|findstr /i /v ".jpg .png"') do (
     rem -- remove "ECHO" bellow if everything is OK 
     ECHO del /q /f "%%~f#" 
    )
    
    :: delete empty folders
    for /f "tokens=* delims=" %%# in ('dir /b /s /a:d|findstr /i /v ".jpg .png"') do (
      :: recursively deletes empty folders .Without /S switch RD should not delete non-empty folders
      RD "%%~f#" >nul 2>nul
    )
    

    未测试。你应该在开始时设置你的路径。删除文件不是“激活的” - 只有一个回显。您应该删除评论中提到的ECHO

    【讨论】:

    • 遗憾的是它不起作用,它既不回显任何内容,也不会在删除回显评论后删除任何内容。
    【解决方案2】:

    最后自己解决了。

    REM Use at your own risk, it does a mass DELETE of everything!
    
    SET ExcludeFiles=(png jpg)     
    SET MapDrive=%cd:~0,1%
    SET Directory=%~dp0
    
    %MapDrive%:
    cd %Directory%
    
    attrib +a *.* /s
    echo %date%
    for %%i in %ExcludeFiles% do attrib -a *.%%i /s
    echo %date%
    del %Directory%\*.* /s /a:a /q
    
    echo %date%
    attrib +a %Directory%\*.* /s
    echo %date%
    
    for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"
    pause
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多