我总是让我的photocamera在拍照时创建RAW文件和JPG。 在我的“开发”RAW文件的工作流程中,我首先浏览JPG并从我不想处理的照片中删除JPG。然后我留下了一个包含所有RAW文件和一些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
答案 0 :(得分:1)
你的错误就行了
if exist {%%~nF.jpg} (
{
和}
没有特殊含义,因此被视为字面字符。
因此,此IF条件会检查开头为{
的* .jpg文件,并在文件名末尾检查}
。
只需删除{
和}
,您的批处理文件即可运行。
答案 1 :(得分:0)
我添加了一个名为RAW的子目录的创建以及从相机中删除所有原始JPG(因为我不再使用它们)。
我已经创造了第二个剧本,可以在"开发部分"之后运行。工作流程。第二个脚本检查哪些RAW文件已成功处理,并将这些RAW文件及其配置文件(由DXO Optics制作)移动到RAW子目录。我保留它们存档,以防我想再次处理它们。 它在主目录中离开:
在RAW子目录中,获得:
删除不需要的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