You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows下批量删除无对应JPG的同名RAW文件的最快方法

嘿,这个需求太普遍了——清理掉那些没对应JPG的RAW文件,我给你几个靠谱的方法,按需选择:

方法一:Windows PowerShell(最推荐,灵活且安全)

PowerShell逻辑清晰,还能先预览要删除的文件,不容易误操作。步骤如下:

  1. 打开你的图片文件夹,按住Shift键右键空白处,选择「在此处打开PowerShell窗口」
  2. 执行下面的命令(记得把.CR2换成你实际的RAW格式,比如.NEF.ARW.DNG这些):
# 先收集所有保留下来的JPG文件名(不带扩展名)
$jpgFilenames = Get-ChildItem -Filter "*.jpg" -File | ForEach-Object { $_.BaseName }

# 找出没有对应JPG的RAW文件,先预览要删除的内容
Get-ChildItem -Filter "*.CR2" -File | Where-Object { $jpgFilenames -notcontains $_.BaseName } | Remove-Item -WhatIf
  • 执行后会列出所有将要删除的RAW文件,确认没问题后,去掉命令末尾的 -WhatIf 再执行一次,就会真正删除这些文件。
方法二:CMD命令提示符(适合习惯旧命令行的用户)

如果你更熟悉CMD,可以用批处理脚本:

  1. 在图片文件夹里新建一个文本文件,把下面的内容粘贴进去,然后把扩展名改成.bat
  2. 把脚本里的.CR2替换成你的RAW格式,保存后双击运行:
@echo off
setlocal enabledelayedexpansion

:: 替换成你的RAW文件扩展名,比如.NEF/.ARW/.DNG
set "RAW_EXT=.CR2"

:: 先记录所有存在的JPG文件名
for %%f in (*.jpg) do (
    set "jpg_exists_%%~nf=1"
)

:: 遍历所有RAW文件,删除没有对应JPG的
for %%f in (*%RAW_EXT%) do (
    if not defined jpg_exists_%%~nf (
        echo 待删除:"%%f"
        :: 确认无误后,把下面一行的rem删掉,就能执行删除
        :: del "%%f"
    )
)

pause
endlocal
  • 第一次运行会只列出要删的文件,确认后去掉del前面的rem,再运行就会删除。
方法三:可视化操作(适合完全不想碰命令的用户)

如果实在不想用命令行,可以借助Windows资源管理器的搜索+筛选,配合批量选择:

  1. 在图片文件夹右上角搜索框输入 *.jpg,全选所有搜索结果,右键→「复制」(或者记住这些文件名的前缀)
  2. 清空搜索框,输入你的RAW格式(比如*.CR2),得到所有RAW文件
  3. 按名称排序,然后对比JPG的列表,选中那些没有对应JPG的RAW文件删除。不过这个方法适合文件数量不多的情况,成千上百张的话还是命令行效率高。

⚠️ 重要提醒:不管用哪种方法,操作前一定要先备份整个文件夹,或者用预览命令确认要删除的文件,避免误删重要内容!

内容的提问来源于stack exchange,提问作者Robert Tausig

火山引擎 最新活动