标题: [文件操作] [已解决]批处理利用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- @echo off
- REM 设置图片所在的文件夹
- set "OldFolder=C:\Test\测试"
- REM 设置分页文件的文件名
- set "InputFile=MyPage.txt"
-
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "FileCount=1"
- for /f "skip=1 tokens=1-3" %%a in ('type "%InputFile%"') do (
- if defined FolderL1 (
- call :ExecMove !FolderL1! !FolderL2! %%c
- )
- set "FolderL1=%%a"
- set "FolderL2=%%b"
- )
- md "!FolderL1!\!FolderL2!"
- move "%OldFolder%\*.jpg" "!FolderL1!\!FolderL2!"
- endlocal
- exit /b
-
- :ExecMove
- md "%1\%2"
- for %%i in ("%OldFolder%\*.jpg") do (
- move "%%i" "%1\%2"
- set /a FileCount+=1
- if !FileCount! equ %3 (
- exit /b
- )
- )
复制代码
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行:- @echo off
- REM 设置图片所在的文件夹
- set "OldFolder=C:\Test\测试"
- REM 设置分页文件的文件名
- set "InputFile=MyPage.txt"
-
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "FileCount=1"
- for /f "skip=1 tokens=1-3" %%a in ('type "%InputFile%"') do (
- if defined FolderL1 (
- call :ExecMove !FolderL1! !FolderL2! %%c
- )
- set "FolderL1=%%a"
- set "FolderL2=%%b"
- )
- md "!FolderL1!\!FolderL2!"
- move "%OldFolder%\*.jpg" "!FolderL1!\!FolderL2!"
- endlocal
- for /f "delims=" %%i in ('dir /b /s /a-d "%OldFolder%\*.jpg"') do (
- for /f "delims=" %%j in ("%%i\..") do (
- ren "%%i" "%%~nxj.%%~nxi"
- )
- )
- exit /b
-
- :ExecMove
- md "%1\%2"
- for %%i in ("%OldFolder%\*.jpg") do (
- move "%%i" "%1\%2"
- set /a FileCount+=1
- if !FileCount! equ %3 (
- exit /b
- )
- )
复制代码
作者: 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 |