找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 6725|回复: 8

[文件操作] 【已解决】跪求批处理命令将所有文件夹包括子文件夹下的图片按文件名顺序合并成长图

[复制链接]
发表于 2025-4-11 04:24:22 | 显示全部楼层 |阅读模式
本帖最后由 crownking1983 于 2025-4-13 06:48 编辑

跪求批处理命令将所有文件夹包括子文件夹下的图片按文件名顺序合并成长图。
实例 文件夹下有文件 0001.jpg  0002.jpg  0003.jpg  0004.jpg  0005.jpg ……
这些图片都是宽度不等且长度也不等的。
跪求批处理命令,按照自定义800像素的宽度,将这些宽度不等的图片按比例放大和缩小统一宽度为800像素并保证图片比例不变,然后按文件名顺序由上到下合并成一条长图,长度不限制,有几张图就全部由上到下拼接起来。
PS:我电脑里安装的有magick.exe
发表于 2025-4-11 09:40:47 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-4-11 09:55 编辑

回复 1# crownking1983

以下代码存为 test.bat 置于图片根目录下运行,其结果会将根目录下的每个子目录中的 *.jpg 文件按预设宽度(即代码中 400 预设值,可自定义)等比缩放再拼接成一个纵向长图(修改代码中 -append 为 +append 即成横向长图,相应须调整预设宽度 400 为 x400 即成预设高度),其结果文件名格式为 '所在子目录名@all.jpg',magick.exe 的位置须预设在系统路径中或就在图片根目录下...

  1. @echo off &for /d /r %%d in (*) do (magick "%%d\*.jpg" -resize 400 -append "%%d\%%~nd@all.jpg") 2>nul
  2. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
crownking1983 + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-4-11 11:13:20 | 显示全部楼层
回复 2# aloha20200628


    膜拜大佬 您太厉害了 但是貌似只对子目录下的图片文件起作用 对同级目录下的图片不起作用呢?麻烦您修改一下对同级目录下的图片一样起作用的
发表于 2025-4-11 11:56:06 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-4-11 12:16 编辑

回复 3# crownking1983

补全对根目录即当前目录下 *.jpg 图片文件的处理,代码首行预设宽度值变量 w=400(可自定义)...

  1. @echo off &set "w=400"
  2. for %%d in ("%cd%") do (magick "*.jpg" -resize %w% -append "%%~nd@all.jpg") 2>nul
  3. for /d /r %%d in (*) do (magick "%%d\*.jpg" -resize %w% -append "%%d\%%~nd@all.jpg") 2>nul
  4. pause&exit/b
复制代码
或采用以下更为简化的同效代码...

  1. @echo off &for /f "delims=" %%d in ('echo,%cd%^&dir/b/s/ad') do (magick "%%d\*.jpg" -resize 400 -append "%%d\%%~nd@all.jpg") 2>nul
  2. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
crownking1983 + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-4-12 05:29:01 | 显示全部楼层
回复 4# aloha20200628


    大神 你实在是太牛逼了! 我给你俩贴都加分!!另外大神,我再引申一下,批处理后,文件夹里及子文件夹里仅保留合并后的一张图片,其他图片全部自动删除,能实现么?我今天使用了以后 文件夹我还要一个一个点开删图片很累
发表于 2025-4-12 09:11:50 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-4-12 11:13 编辑

回复 5# crownking1983

图片根目录及其每个子目录中仅保留一个拼接结果文件,源 *.jpg 文件均会被删除...

  1. @echo off &for /f "delims=" %%d in ('echo,%cd%^&dir/b/s/ad') do (
  2.   magick -quiet "%%d\*.jpg" -resize 400 -append "%%d\#.$"
  3.   del /q "%%d\*.jpg" &ren "%%d\#.$" "%%~nd@all.jpg") 2>nul
  4. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
crownking1983 + 1 技术太牛逼了!

查看全部评分

 楼主| 发表于 2025-4-12 19:51:13 | 显示全部楼层
回复 6# aloha20200628


    大佬 我试验了一下 这个代码对子目录起作用 对当前目录的图片不起作用 哈哈哈哈
 楼主| 发表于 2025-4-12 20:02:35 | 显示全部楼层
回复 6# aloha20200628


    好像真的对当前目录下的图片不起作用
 楼主| 发表于 2025-4-12 20:05:45 | 显示全部楼层
回复 6# aloha20200628


    我又试了一下 好像好了!是我的问题 大佬牛鼻!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:25 , Processed in 0.021240 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表