相機挑選JPG照片,同步刪除RAW格式文件,批處理文件bat,放到JPG和NEF文件夾根目錄
– NEF 文件夾
– JPG 文件夾
文件同步刪除.bat
@echo off:: 要同步的文件夾及文件后綴名(相同),即要刪除文件的目錄
set del_subfix=NEF
:: 要參考的文件夾及文件后綴名(相同),即參考的文件的目錄
set ref_subfix=JPGset del_dir=.\%del_subfix%\*.%del_subfix%
set ref_dir=.\%ref_subfix%\*.%ref_subfix%echo.
echo * 確保文件 %ref_subfix% 及 %del_subfix% 文件夾在當前程序目錄中,且其文件夾名稱與其內部的文件后綴相同且大小寫一樣。
echo * 以 %ref_subfix% 目錄中文件為基準,刪除 %del_subfix% 目錄中多余的 %del_subfix% 格式文件
echo.
setlocal enabledelayedexpansion
set ref_array_index=0
for /f "delims=" %%m in ('dir /a-d /b %ref_dir%') do (set ref_array[!ref_array_index!]=%%~nmset /a ref_array_index=!ref_array_index!+1
)
echo * %ref_subfix% 文件夾中共有!ref_array_index!個 %ref_subfix% 文件
set del_array_index=0
for /f "delims=" %%m in ('dir /a-d /b %del_dir%') do (set del_array[!del_array_index!]=%%~nmset /a del_array_index=!del_array_index!+1
)
echo * %del_subfix% 文件夾中共有 !del_array_index! 個 %del_subfix% 文件
echo.
echo.
echo * 繼續分析查找要刪除的文件請輸入 1 ,取消輸入 0 或其他字符
set /p input_confirm=
echo.
if %input_confirm% neq 1 (echo * 已取消!goto EndTip
)
echo 正在分析對比找出要刪除的文件:
set del_index=0
set count=0
:BeginLoop2if !del_index! geq !del_array_index! ( goto EndLoop2)set tempDelFile=!del_array[%del_index%]!set /a del_index=!del_index!+1set index_ref=0set flag=0;:BeginLoopif %index_ref% geq !ref_array_index! ( goto EndLoop)set tempRefFile=!ref_array[%index_ref%]!if !tempDelFile! equ !tempRefFile! (set flag=1echo 已查找到名稱是!tempDelFile!.%ref_subfix%的文件...進度!del_index!/!del_array_index!goto EndLoop) else (set flag=0)set /a index_ref=%index_ref%+1goto BeginLoop:EndLoopif !flag! == 0 (echo 未查找到名稱是!tempDelFile!.%ref_subfix%的文件...進度!del_index!/!del_array_index!set final_array[!count!]=!tempDelFile!.!del_subfix!set /a count=!count!+1)goto BeginLoop2
:EndLoop2
echo.
echo.
if !count! == 0 (echo * 沒有任何 %del_subfix% 文件需要刪除goto EndTip
)
echo * 共需刪除 !count! 個 %del_subfix% 文件,文件列表如下:
set index_tip=0
:BeginLoop1if %index_tip% geq !count! (goto EndLoop1)echo !final_array[%index_tip%]!set /a index_tip=!index_tip!+1goto BeginLoop1
:EndLoop1
echo.
echo.
echo * 確認刪除請輸入 1 ,取消輸入 0 或其他字符
set /p input_source=
echo.
if %input_source% neq 1 (echo * 已取消!goto EndTip
)
set index_final=0
echo ========開始刪除=========
echo.
:BeginLoop3if %index_final% geq !count! (goto EndLoop3)del /f /s /q .\%del_subfix%\"!final_array[%index_final%]!"set /a index_final=%index_final%+1set /a progress=%index_final%*100/!count!echo 進度:%index_final%/!count!(!progress!%)goto BeginLoop3
:EndLoop3
echo.
echo ========刪除結束=========
echo.
echo.
echo * 文件同步刪除完成,共刪除 !index_final! 個 %del_subfix% 文件!
:EndTip
echo.
echo. & pause