Board logo

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

作者: tttoi2000    时间: 2023-6-27 20:49     标题: [已解决]批处理利用Excel表能否以页号的方法批量移动图片及相应建立文件夹?

本帖最后由 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
请大神帮忙,另外有时首个文件夹和最尾文件夹会出现单幅图片,能否实现以页号的方法批量移动图片及相应建立文件夹?
作者: Batcher    时间: 2023-6-28 09:18

回复 1# tttoi2000


如果页号是:
1
2
6
希望得到什么结果?
作者: tttoi2000    时间: 2023-6-28 21:21

第一个文件夹名为        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
~。。。。
                    不知表达清楚没?
作者: Batcher    时间: 2023-6-29 15:14

回复 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
作者: tttoi2000    时间: 2023-7-1 20:06

好像不行,图片都移到最外层文件夹了,且没改文件名及建立相应文件夹
作者: Batcher    时间: 2023-7-1 22:09

回复 5# tttoi2000


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

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: tttoi2000    时间: 2023-9-3 15:34

本帖最后由 tttoi2000 于 2023-9-3 21:18 编辑

回复 6# Batcher
您好,大侠在吗,成功的分出我想要的内容来了,但是图片没加以文件夹名的前缀
[img] https://imgse.com/i/pPD3vuT[/img]
作者: Batcher    时间: 2023-9-4 11:21

回复 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. )
复制代码

作者: tttoi2000    时间: 2023-9-4 20:12

大侠有QQ号吗?图片还是没加上以文件夹名的前缀
作者: Batcher    时间: 2023-9-4 21:09

回复 9# tttoi2000


请按照6楼的步骤操作。如果需要加入微信群或QQ群,请参考:
http://bbs.bathome.net/thread-3473-1-1.html
作者: tttoi2000    时间: 2023-9-4 22:09

链接:https://pan.baidu.com/s/1Py0Ja2GOcAK-t6qOdNyLYw
提取码:t86l
作者: Batcher    时间: 2023-9-5 09:08

回复 11# tttoi2000


    8楼代码已更新,请再试试。
作者: tttoi2000    时间: 2023-9-5 20:17

辛苦大侠了,完美解决问题。
作者: cnnetstar    时间: 2023-9-7 10:28

本帖最后由 cnnetstar 于 2023-9-7 10:30 编辑

回复 8# Batcher


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

十分感谢!
作者: Batcher    时间: 2023-9-7 10:50

回复 14# cnnetstar


    请按照6楼的方法把处理之前和处理之后的目录结构分别上传到网盘,我理解一下。
作者: cnnetstar    时间: 2023-11-11 22:45

回复 4# Batcher


    REM 设置图片所在的文件夹
set "OldFolder=C:\Test\测试"
大佬, 请问一哈, 现在测试下是图片. 如果其下有多个子夹, 怎么修改代码来实现批量? 感谢!
作者: Batcher    时间: 2023-11-12 10:46

回复 16# cnnetstar


    请按照6楼的方法把处理之前和处理之后的目录结构分别上传到网盘,我理解一下。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2