cmd如何删除JPG文件并仅保留RAW

时间:2017-06-25 20:09:00

标签: batch-file cmd

我有时只用JPG手机拍照,但有时用RAW拍照。拍摄RAW时,手机实际上存储了两个文件(filename.jpg和filename.dng) 我想编写一个脚本来搜索已定义的文件夹并删除所有具有相同文件名的JPG,如DNG(RAW)。

示例 - 文件夹包含以下文件:

IMG_20170625_105228.dng
IMG_20170625_105228.jpg
IMG_20170625_105326.jpg
IMG_20170625_105337.jpg
IMG_20170625_105350.dng
IMG_20170625_105350.jpg

脚本应该删除:

IMG_20170625_105228.jpg
IMG_20170625_105350.jpg

1 个答案:

答案 0 :(得分:4)

迭代.dng文件,如果存在类似命名的.jpg文件,请将其删除。如果您确信要删除正确的文件,请从ECHO命令中删除DEL

PUSHD "C:\the\dir\containing\pics"

FOR /F "usebackq tokens=*" %%f IN (`DIR /B "*.dng"`) DO (
    IF EXIST "%%~nf.jpg" (ECHO DEL "%%~nf.jpg")
)

POPD

无论出于何种原因,如果您想在PowerShell中执行此操作,您可以执行以下操作。删除正确的文件后,从-WhatIf命令中删除Remove-Item。我很想听听任何人在PowerShell中更好的方法。

$picdir = 'C:\dir\path\to\pics'

Get-ChildItem -Path $picdir -File -Filter '*.dng' |
    Where-Object { Test-Path -Path "$($_.DirectoryName)/$($_.BaseName).jpg" -PathType Leaf } |
    Select-Object @{Name="Path";Expression={"$($_.DirectoryName)\$($_.BaseName).jpg"}} |
    Remove-Item -WhatIf