删除原图保留1240图片,或者提取1240新建文件夹

图片压缩为1240尺寸后,我们需要删除原图,我以前用的批处理代码:

@echo off
setlocal enabledelayedexpansion

REM 设置起始文件夹路径
set "root_folder=D:\OneDrive\UTM2024\AFRICAN CONDOR\PHOTO\new"

REM 调用递归函数处理每个文件夹
call :process_folder "%root_folder%"
goto end

:process_folder
pushd "%~1"
echo Processing folder: %cd%

REM 检查并删除不包含1240的图片文件
for %%f in (*.jpg; *.png; *.bmp) do (
    set "filename=%%f"
    REM 检查文件名是否包含1240
    echo !filename! | find "1240" >nul
    if errorlevel 1 (
        REM 如果不包含1240,则删除文件
        echo Deleting !filename!
        del "!filename!"
    )
)

REM 递归检查当前文件夹的所有子文件夹
for /d %%d in (*) do (
    call :process_folder "%%d"
)

popd
goto :eof

:end
echo Done.
pause

有个不好就是,如果没压缩就点了的话,很容易把原图全删了。

小师傅建议:把里面的1240图片提取出来,重新新建一个文件夹保存。

@echo off
setlocal enabledelayedexpansion

REM 设置起始文件夹路径
set "root_folder=D:\OneDrive\UTM2024\AFRICAN CONDOR\CESHI"
REM 设置目标文件夹路径
set "target_folder=D:\OneDrive\UTM2024\AFRICAN CONDOR\PHOTOS"

REM 确保目标文件夹存在
if not exist "%target_folder%" (
    mkdir "%target_folder%"
)

REM 开始处理文件夹
call :process_folder "%root_folder%"
echo Done.
pause
exit /b

:process_folder
pushd "%~1" || exit /b

REM 生成在目标中创建的相应子文件夹路径
set "subfolder=!cd:%root_folder%=!"
set "destination=%target_folder%!subfolder!"

REM 确保即使当前文件夹没有符合条件的图片也要创建相应的文件夹路径
if not exist "!destination!" (
    mkdir "!destination!"
)

REM 处理当前文件夹中的图片文件
for %%f in (*.jpg *.png *.bmp) do (
    set "filename=%%f"
    echo !filename! | find "1240" >nul
    if not errorlevel 1 (
        REM 移动文件到新的路径
        echo Moving !filename! to !destination!
        move "!filename!" "!destination!"
    )
)

REM 递归处理子文件夹
for /d %%d in (*) do (
    call :process_folder "%%d"
)

popd
exit /b

我测试了下,没问题,而且保存出来的还是按照原来的文件夹层级来的,挺不错的。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容