读取当前文件夹中所有图片的名称并输出显示

以下是一个简单高效的 BAT 脚本,用于读取当前文件夹中所有图片的名称并输出显示:

如果需要支持更多图片格式,可以在set "image_exts=..."这一行中添加对应的扩展名(用空格分隔)。

@echo off
setlocal enabledelayedexpansion

:: 定义需要识别的图片文件扩展名
set "image_exts=jpg jpeg png gif bmp webp tif tiff ico"

:: 输出标题信息
echo ==============================================
echo            当前文件夹中的图片文件列表
echo ==============================================
echo.

:: 初始化计数器
set "count=0"

:: 遍历所有指定格式的图片文件
for %%e in (%image_exts%) do (
    :: 检查是否存在该类型的文件
    if exist "*.%%e" (
        :: 遍历并输出该类型的所有文件
        for %%f in (*.%%e) do (
            set /a count+=1
            echo [!count!] %%f
        )
    )
)

:: 输出统计结果
echo.
echo ==============================================
if %count% equ 0 (
    echo 未找到任何图片文件
) else (
    echo 共找到 %count% 个图片文件
)
echo ==============================================

:: 保持窗口停留,按任意键关闭
pause

endlocal

image

改进一:

@echo off
setlocal enabledelayedexpansion

:: 定义需要识别的图片文件扩展名
set "image_exts=jpg jpeg png gif bmp webp tif tiff ico"
set "keep=8"  :: 保留后6位字符

:: 输出标题信息
echo ==============================================
echo            当前文件夹中的图片文件列表
echo ==============================================
echo.

:: 初始化计数器
set "count=0"

:: 遍历所有指定格式的图片文件
for %%e in (%image_exts%) do (
    :: 检查是否存在该类型的文件
    if exist "*.%%e" (
        :: 遍历并输出该类型的所有文件
        for %%f in (*.%%e) do (
            set /a count+=1
            set "fullname=%%f"
            set "namelen=0"

            :: 截取后6位并输出
            set "shortname=!fullname:~-%keep%!"
    
            echo [!count!] 完整名称:%%f → 后%keep%位:!shortname!
        )
    )
)

:: 输出统计结果
echo.
echo ==============================================
if %count% equ 0 (
    echo 未找到任何图片文件
) else (
    echo 共找到 %count% 个图片文件
)
echo ==============================================

:: 保持窗口停留,按任意键关闭
pause

endlocal

在for循环里面将名称改为后6位

image

优化二:

@echo off
setlocal enabledelayedexpansion

:: 配置参数
set "image_exts=jpg jpeg png gif bmp webp tif tiff ico"
set "keep=11"  :: 固定截取后11位

:: 标题信息
echo ==============================================
echo        强制截取图片名称后%keep%位作为新名称
echo ==============================================
echo 说明:无论原文件名长度,均截取最后%keep%位
echo ==============================================
echo.

:: 计数器初始化
set "total=0"
set "renamed=0"

:: 遍历处理图片文件
for %%e in (%image_exts%) do (
    if exist "*.%%e" (
        for %%f in (*.%%e) do (
            set /a total+=1
            set "old_name=%%f"
            
            :: 直接截取后6位(无需计算长度)
            set "new_name=!old_name:~-%keep%!"
            
            :: 仅处理需要重命名的文件
            if "!old_name!" neq "!new_name!" (
                :: 处理重名
                if exist "!new_name!" (
                    set "ext=%%~xf"
                    set "base=!new_name:%ext%=!"
                    set "num=1"
                    :duplicate_check
                    if exist "!base!_!num!!ext!" set /a num+=1 & goto duplicate_check
                    set "new_name=!base!_!num!!ext!"
                )
                
                :: 执行重命名
                ren "%%f" "!new_name!" && (
                    echo [!total!] 已重命名:!old_name! → !new_name!
                    set /a renamed+=1
                ) || (
                    echo [!total!] 重命名失败:!old_name!
                )
            ) else (
                echo [!total!] 无需修改:!old_name!
            )
        )
    )
)

:: 统计结果
echo.
echo ==============================================
echo 处理完成!
echo 总文件数:%total%
echo 成功重命名:%renamed%
echo ==============================================

pause
endlocal

image

posted @ 2025-07-22 14:45  ꧁༺星星的轨迹方程式༻꧂  阅读(25)  评论(0)    收藏  举报