读取当前文件夹中所有图片的名称并输出显示
以下是一个简单高效的 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
改进一:
@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位
优化二:
@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
本文来自博客园,作者:꧁༺星星的轨迹方程式༻꧂,转载请注明原文链接:https://www.cnblogs.com/SuSVIP/p/18998747