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

[文件操作] [已解决]批处理利用Excel表能否以页号的方法批量移动图片及相应建立文件夹?

[复制链接]
发表于 2023-6-27 20:49:25 | 显示全部楼层 |阅读模式
本帖最后由 tttoi2000 于 2023-9-5 20:17 编辑

有批图片
001.jpg~N为连续号
已作好Excel文件
第一层文件夹名                           第二层文件夹名                                   页号
XX00·000-WS·2019-Y-DQL        XX00·000-WS·2019-Y-DQL-0001             1
XX00·000-WS·2019-Y-DQL        XX00·000-WS·2019-Y-DQL-0002             3
XX00·000-WS·2019-Y-DQL        XX00·000-WS·2019-Y-DQL-0003             5
X:\XX00·000-WS·2019-Y-DQL
    |_XX00·000-WS·2019-Y-DQL-0001
       |_XX00·000-WS·2019-Y-DQL-0001.001.jpg
       |_XX00·000-WS·2019-Y-DQL-0001.002.jpg
    |_XX00·000-WS·2019-Y-DQL-0002
       |_XX00·000-WS·2019-Y-DQL-0002.003.jpg
       |_XX00·000-WS·2019-Y-DQL-0002.004.jpg
    |_XX00·000-WS·2019-Y-DQL-0003
       |_XX00·000-WS·2019-Y-DQL-0003.005.jpg
       |_XX00·000-WS·2019-Y-DQL-0003.006.jpg
       .....N
请大神帮忙,另外有时首个文件夹和最尾文件夹会出现单幅图片,能否实现以页号的方法批量移动图片及相应建立文件夹?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-6-28 09:18:19 | 显示全部楼层
回复 1# tttoi2000


如果页号是:
1
2
6
希望得到什么结果?
 楼主| 发表于 2023-6-28 21:21:33 | 显示全部楼层
第一个文件夹名为        XX00·000-WS·2019-Y-DQL-0001
第二个文件页号减下第一个文件页号则移动1张图片(2-1=1)
文件夹图片名为  XX00·000-WS·2019-Y-DQL-0001.001.jpg

第二个文件夹名为         XX00·000-WS·2019-Y-DQL-0002
第三个文件页号减下第二个文件页号则移动4张图片(6-2=4)
文件夹图片名为  XX00·000-WS·2019-Y-DQL-0001.002.jpg
                         XX00·000-WS·2019-Y-DQL-0001.003.jpg
                         XX00·000-WS·2019-Y-DQL-0001.004.jpg
                         XX00·000-WS·2019-Y-DQL-0001.005.jpg
如果尾个文件页号为6且后继无分件,则移动1张(或后继所有图片)  
文件夹名为        XX00·000-WS·2019-Y-DQL-0003
文件夹图片名为  XX00·000-WS·2019-Y-DQL-0001.006.jpg
~。。。。
                    不知表达清楚没?
发表于 2023-6-29 15:14:55 | 显示全部楼层
回复 3# tttoi2000


1、Excel表格内容导出文本文件 MyPage.txt
第一层文件夹名                           第二层文件夹名                                   页号
XX00·000-WS·2019-Y-DQL        XX00·000-WS·2019-Y-DQL-0001             1
XX00·000-WS·2019-Y-DQL        XX00·000-WS·2019-Y-DQL-0002             2
XX00·000-WS·2019-Y-DQL        XX00·000-WS·2019-Y-DQL-0003             5

2、请参考Q-04和Q-05把test.bat文件和MyPage.txt文件都保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. REM 设置图片所在的文件夹
  3. set "OldFolder=C:\Test\测试"
  4. REM 设置分页文件的文件名
  5. set "InputFile=MyPage.txt"

  6. cd /d "%~dp0"
  7. setlocal enabledelayedexpansion
  8. set "FileCount=1"
  9. for /f "skip=1 tokens=1-3" %%a in ('type "%InputFile%"') do (
  10.     if defined FolderL1 (
  11.         call :ExecMove !FolderL1! !FolderL2! %%c
  12.     )
  13.     set "FolderL1=%%a"
  14.     set "FolderL2=%%b"
  15. )
  16. md "!FolderL1!\!FolderL2!"
  17. move "%OldFolder%\*.jpg" "!FolderL1!\!FolderL2!"
  18. endlocal
  19. exit /b

  20. :ExecMove
  21. md "%1\%2"
  22. for %%i in ("%OldFolder%\*.jpg") do (
  23.     move "%%i" "%1\%2"
  24.     set /a FileCount+=1
  25.     if !FileCount! equ %3 (
  26.         exit /b
  27.     )
  28. )
复制代码
3、把test.bat文件和MyPage.txt文件放在同一个目录下,执行脚本test.bat
 楼主| 发表于 2023-7-1 20:06:20 | 显示全部楼层
好像不行,图片都移到最外层文件夹了,且没改文件名及建立相应文件夹
发表于 2023-7-1 22:09:56 | 显示全部楼层
回复 5# tttoi2000


请把你测试用的bat、txt、jpg打包上传我试试。
如果需要上传文件,可以用阿里云盘或百度网盘。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
 楼主| 发表于 2023-9-3 15:34:01 | 显示全部楼层
本帖最后由 tttoi2000 于 2023-9-3 21:18 编辑

回复 6# Batcher
您好,大侠在吗,成功的分出我想要的内容来了,但是图片没加以文件夹名的前缀
[img] https://imgse.com/i/pPD3vuT[/img]
发表于 2023-9-4 11:21:38 | 显示全部楼层
回复 7# tttoi2000


这个功能增加在20~24行:
  1. @echo off
  2. REM 设置图片所在的文件夹
  3. set "OldFolder=C:\Test\测试"
  4. REM 设置分页文件的文件名
  5. set "InputFile=MyPage.txt"

  6. cd /d "%~dp0"
  7. setlocal enabledelayedexpansion
  8. set "FileCount=1"
  9. for /f "skip=1 tokens=1-3" %%a in ('type "%InputFile%"') do (
  10.     if defined FolderL1 (
  11.         call :ExecMove !FolderL1! !FolderL2! %%c
  12.     )
  13.     set "FolderL1=%%a"
  14.     set "FolderL2=%%b"
  15. )
  16. md "!FolderL1!\!FolderL2!"
  17. move "%OldFolder%\*.jpg" "!FolderL1!\!FolderL2!"
  18. endlocal
  19. for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%\*.jpg"') do (
  20.     for /f "delims=" %%j in ("%%i\..") do (
  21.         ren "%%i" "%%~nxj.%%~nxi"
  22.     )
  23. )
  24. exit /b

  25. :ExecMove
  26. md "%1\%2"
  27. for %%i in ("%OldFolder%\*.jpg") do (
  28.     move "%%i" "%1\%2"
  29.     set /a FileCount+=1
  30.     if !FileCount! equ %3 (
  31.         exit /b
  32.     )
  33. )
复制代码
 楼主| 发表于 2023-9-4 20:12:08 | 显示全部楼层
大侠有QQ号吗?图片还是没加上以文件夹名的前缀
发表于 2023-9-4 21:09:10 | 显示全部楼层
回复 9# tttoi2000


请按照6楼的步骤操作。如果需要加入微信群或QQ群,请参考:
http://bbs.bathome.net/thread-3473-1-1.html
 楼主| 发表于 2023-9-4 22:09:24 | 显示全部楼层
发表于 2023-9-5 09:08:31 | 显示全部楼层
回复 11# tttoi2000


    8楼代码已更新,请再试试。
 楼主| 发表于 2023-9-5 20:17:06 | 显示全部楼层
辛苦大侠了,完美解决问题。
发表于 2023-9-7 10:28:31 | 显示全部楼层
本帖最后由 cnnetstar 于 2023-9-7 10:30 编辑

回复 8# Batcher


    大佬好! 这个代码怎么修改一哈, 可以实现以下功能:
1. 当前是测试下直接是JPG文件, 假如测试下还有一级子夹, 即现在新建的第一层, JPG已经在相应子夹内.
2. 目前是MOVE, 可否实现COPY, 让原始图片状态保留着.

十分感谢!
发表于 2023-9-7 10:50:18 | 显示全部楼层
回复 14# cnnetstar


    请按照6楼的方法把处理之前和处理之后的目录结构分别上传到网盘,我理解一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 08:58 , Processed in 0.011671 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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