将每张图片批量复制到所有以该图片文件名前缀开头的空文件夹里

现在有个需求:D盘【文件夹1】里有一些图片文件,D盘【文件夹2】里有一些空文件夹,需要将【文件夹1】中的每张图片批量复制到【文件夹2】中所有以该图片文件名前缀开头的空文件夹里,如下图。

图片[1]-将每张图片批量复制到所有以该图片文件名前缀开头的空文件夹里-十一张

十一张(www.11zhang.com)写了一个可以实现此功能的BAT脚本,这个脚本会自动匹配图片文件和对应的文件夹,并进行复制操作。

脚本代码

@echo off
setlocal enabledelayedexpansion

REM 设置源图片文件夹和目标空文件夹的路径
set "source_folder=D:\文件夹1"
set "target_root_folder=D:\文件夹2"

echo 开始处理图片批量复制...

REM 遍历源文件夹中的所有jpg图片
for /r "%source_folder%" %%I in (*.jpg) do (

    REM 获取文件名(不含扩展名)
    for %%F in ("%%~nI") do set "base_name=%%~F"
    
    echo 正在处理图片: !base_name!.jpg

    REM 遍历目标根文件夹,寻找所有以当前图片文件名开头的文件夹
    for /d /r "%target_root_folder%" %%D in ("!base_name!-*") do (
        echo  找到匹配的文件夹: %%~nxD
        copy "%%I" "%%D\" >nul
        echo   图片已复制到该文件夹
    )
)

echo.
echo 所有操作完成!
pause

操作指南

1、将上面的代码复制到记事本中,然后将文件保存为 copy_images.bat 脚本,注意保存时“保存类型”要选择“所有文件”,而不是“文本文档”,如下图。

图片[2]-将每张图片批量复制到所有以该图片文件名前缀开头的空文件夹里-十一张

2、将 copy_images.bat 脚本文件放置在D盘根目录或任何方便的位置,双击运行 copy_images.bat 脚本。脚本会显示处理进度,包括正在处理的图片文件名和找到的匹配文件夹。

图片[3]-将每张图片批量复制到所有以该图片文件名前缀开头的空文件夹里-十一张
图片[4]-将每张图片批量复制到所有以该图片文件名前缀开头的空文件夹里-十一张

预期效果

以上面的图片文件名为例,运行脚本后:

●图片 CSXY-2023-XS11-Y-001-0001.jpg 会被复制到 CSXY-2023-XS11-Y-001-0001-1、CSXY-2023-XS11-Y-001-0001-2、CSXY-2023-XS11-Y-001-0001-3 等这些以该图片文件名前缀开头的空文件夹里
●图片 CSXY-2023-XS11-Y-001-0002.jpg 会被复制到 CSXY-2023-XS11-Y-001-0002-1、CSXY-2023-XS11-Y-001-0002-2、CSXY-2023-XS11-Y-001-0002-3 等这些以该图片文件名前缀开头的空文件夹里
●其它图片,复制同理!

温馨提示

1、测试​​:在正式处理大量文件前,建议先在少量文件和文件夹上测试脚本,确保结果符合预期。
2、​​文件覆盖​​:如果目标文件夹中已存在同名图片文件,copy命令会直接覆盖它。如果您希望避免覆盖,可以在 copy命令中添加 /y 参数(表示强制覆盖且不提示)或根据需要添加判断逻辑。

脚本解释

为了帮助您理解和使用,下面对脚本的关键部分进行说明,如果你不感兴趣,可以跳过以下内容。

1、​​路径设置​​:脚本开头的 source_foldertarget_root_folder 变量需要根据您的实际路径进行修改。如果您将脚本保存在D盘根目录或【文件夹1】中,且文件夹名称就是“文件夹1”和“文件夹2”,则无需修改。
2、核心逻辑​​:
●第一个 for 循环用于遍历【文件夹1】中的所有 .jpg图片文件。set "base_name=%%~F" 这行代码用于提取不带扩展名的纯文件名(例如,从 CSXY-2023-XS11-Y-001-0001.jpg 中得到 CSXY-2023-XS11-Y-001-0001)。
●第二个 for /d 循环用于在【文件夹2】及其子目录中递归搜索所有以 !base_name!- 开头的文件夹(例如,搜索所有以 CSXY-2023-XS11-Y-001-0001- 开头的文件夹)。copy "%%I" "%%D\" >nul 命令执行复制操作,将当前图片复制到每一个匹配的文件夹中。>nul 的作用是隐藏复制命令的成功消息,让输出更清晰。

温馨提示:本文最后更新于2025-10-26 00:14:11,某些文章具有时效性,若有错误或下载地址失效,请在文末评论区留言
© 版权声明
THE END
如果觉得这篇文章对您有帮助,可以收藏本网址,方便下次访问!
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容