Windows:比较文件夹中的文件并删除不存在的文件

时间:2014-11-17 10:21:18

标签: windows batch-file batch-processing file-management

我在Windows上有大量目录+包含文件的子目录。 在Windows命令行(或通过脚本)我想比较两个文件夹并从子文件夹中删除不在主文件夹中的文件。

在下面的示例中,应从子文件夹中删除偶数文件。

folder: C:\folder1
    file1.jpg
    file3.jpg
    file4.jpg
    file7.jpg
    file9.jpg

subfolder: C:\folder1\RAW\
    file1.CR2
    file2.CR2
    file3.CR2
    file4.CR2
    file5.CR2
    file6.CR2
    file7.CR2
    file8.CR2
    file9.CR2

我已经尝试了几个我在这里找到的脚本,但没有他们完成这项工作。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

@echo off
    setlocal enableextensions disabledelayedexpansion

    set "folder=c:\folder1\raw"

    for %%a in ("%folder%\*") do (
        dir /a-d "%%~dpa..\%%~na.*" >nul 2>&1 || echo del "%%~fa"
    )

对于指定文件夹中的每个文件,如果父文件夹中不存在具有相同名称的文件,则从子文件中删除dir命令而不是if exists以避免误报与文件夹名称)

删除操作仅回显给控制台。如果输出正确,请删除echo命令

答案 1 :(得分:1)

感谢大家的投入,感谢您的投入,我想出了一个解决方案。它在命令行上使用时非常完美(Windows当然)。

删除前查看列表:

for %F in ("C:\folder1\RAW\*.CR2") do @if not exist "C:\folder1\%~nF.jpg" echo del "%F"

要删除,请删除' echo'

for %F in ("C:\folder1\RAW\*.CR2") do @if not exist "C:\folder1\%~nF.jpg" del "%F"

希望这对一些人也有用!