根据删除的JPG,Windows批处理脚本删除RAW相机文件

时间:2014-05-11 17:54:58

标签: batch-file

我总是让我的photocamera在拍照时创建RAW文件和JPG。 在我的“开发”RAW文件的工作流程中,我首先浏览JPG并从我不想处理的照片中删除JPG。然后我留下了一个包含所有RAW文件和一些JPG的目录:

  • DSC01864.ARW
  • DSC01865.ARW
  • DSC01866.ARW
  • DSC01867.ARW
  • DSC01868.ARW
  • DSC01868.JPG
  • DSC01869.ARW
  • DSC01869.JPG
  • DSC01870.ARW
  • DSC01870.JPG

我想删除已删除JPG的RAW文件。我为此制作了一个Windows批处理脚本,但由于某种原因它不起作用;它会删除所有RAW文件: - (

剧本:

@echo off
for %%F in (*.arw) do (
rem  echo %%~nF.jpg
  if exist {%%~nF.jpg} (
       echo File %%F is kept
       echo ------------------------
  ) else (
       del %%F
       echo File %%F is removed
       echo ------------------------
) )  
goto :EOF

我想现在我做错了什么...... 显然它无法识别任何JPG文件。

顺便说一下,我以前有一个Bash(Linux)的工作脚本,但我现在在Windows上使用DXO光学器件,需要一个Windows版本。我的bash脚本:

#!/bin/bash
for rawfile in *.ARW
do
  jpegfile="`basename "$rawfile" .ARW`.JPG"
  if [ ! -e $jpegfile ]
  then
    /bin/rm -f $rawfile
  fi
done 

2 个答案:

答案 0 :(得分:1)

你的错误就行了

  if exist {%%~nF.jpg} (

{}没有特殊含义,因此被视为字面字符。

因此,此IF条件会检查开头为{的* .jpg文件,并在文件名末尾检查}

只需删除{},您的批处理文件即可运行。

答案 1 :(得分:0)

我添加了一个名为RAW的子目录的创建以及从相机中删除所有原始JPG(因为我不再使用它们)。

我已经创造了第二个剧本,可以在"开发部分"之后运行。工作流程。第二个脚本检查哪些RAW文件已成功处理,并将这些RAW文件及其配置文件(由DXO Optics制作)移动到RAW子目录。我保留它们存档,以防我想再次处理它们。 它在主目录中离开:

  • DSC01868_DxO.JPG
  • DSC01869_DxO.JPG
  • DSC01870_DxO.JPG

在RAW子目录中,获得:

  • DSC01868.ARW
  • DSC01868.ARW.dop
  • DSC01869.ARW
  • DSC01869.ARW.dop
  • DSC01870.ARW
  • DSC01870.ARW.dop

删除不需要的RAW的第一个脚本(Windows批处理)创建一个RAW目录并删除所有原始JPG:

@echo off
for %%F in (*.arw) do (
  if exist %%~nF.jpg (
       echo File %%F is kept
       echo ------------------------
  ) else (
       del %%F
       echo File %%F is removed
       echo ------------------------
) )  
del *.jpg
mkdir RAW
goto :EOF

第二个脚本(Windows批处理),它将RAW文件及其配置文件移动到RAW子目录:

@echo off
for %%F in (*.arw) do (
  if exist %%~nF_DxO.jpg (
       move %%F RAW\
       move %%F.dop RAW\
       echo %%F en %%F.dop are moved
       echo ------------------------
  ) else (
       echo Nothing moved
       echo ------------------------
) )  
goto :EOF

我还没有使用这些脚本的Bash(Linux)等价物。 第一个脚本:

#!/bin/bash
for rawfile in *.ARW
do
  jpegfile="`basename "$rawfile" .ARW`.JPG"
  if [ ! -e $jpegfile ]
  then
    /bin/rm -f $rawfile
  fi
done
mkdir RAW
rm *.JPG

第二个脚本:

#!/bin/bash
for rawfile in *.ARW
do
  jpegfile="`basename "$rawfile" .ARW`_DxO.jpg"
  dopfile="$rawfile.dop"
  echo "$jpegfile"
  if [ -e $jpegfile ]
  then
    mv $rawfile ./RAW/$rawfile
    mv $dopfile ./RAW/$dopfile
  fi
done