Nokia Lumia 1020 的用户知道可以设置以全分辨率存储拍摄的照片,但也会存储缩小尺寸的照片。我希望有一个脚本可以自动删除所有低分辨率版本。
文件名如下:
WP_20150303_17_20_38_Pro.jpg
WP_20150303_17_20_38_Pro__highres.jpg
WP_20150303_17_21_21_Pro.jpg
WP_20150303_17_21_21_Pro__highres.jpg
WP_20150303_17_21_32_Pro.jpg
WP_20150303_17_21_32_Pro__highres.jpg
WP_20150303_17_22_47_Pro.jpg
WP_20150303_17_22_47_Pro__highres.jpg
WP_20150303_17_28_14_Pro.jpg
WP_20150303_17_28_14_Pro__highres.jpg
我可以删除 *_pro.jpg,但这样会存在风险,如果根本没有高分辨率版本怎么办。我该如何编写一个脚本,先检查是否存在高分辨率文件,然后再删除低分辨率版本?
答案1
创建批处理文件。从这里开始:循环命令:针对另一个命令的结果和这里:命令行参数(参数)
For /F "tokens=*" %%G in ('dir /b *_pro.jpg') do (
echo %%~dpnG
)
现在你可以 echo %%~dpnG
改为
if exist "%%~dpnG__highres.jpg" echo del "%%~dpnxG"
甚至
if exist "%%~dpnG__highres.jpg" (
echo del "%%~dpnxG"
) else (
echo retain %%~dpnxG
)
彻底检查输出(最好两次)并echo del
用替换del
。
在命令中添加/s
开关dir
如下:dir /b /s *_pro.jpg
也处理子文件夹中的文件。
答案2
我使用的.bat文件:
@Echo off
For /F "tokens=*" %%G in ('dir /s /b *_pro.jpg') do (
if exist "%%~dpnG__highres.jpg" (
echo delete %%~dpnxG
) else (
echo retain %%~dpnxG
)
)
Echo.
Echo _________________________________________________
Echo.
Echo Do you really want to delete these files (Y/N)?
CHOICE /C YN /N
IF ERRORLEVEL 2 goto doend
IF ERRORLEVEL 1 goto doerase
exit
:doerase
For /F "tokens=*" %%G in ('dir /s /b *_pro.jpg') do (
if exist "%%~dpnG__highres.jpg" (
del "%%~dpnxG"
) else (
REM echo retain %%~dpnxG
)
)
:doend
pause