标题: [文件操作] 【已解决】BAT代码怎么写,批量放置每4张图片到顺序文件夹? [打印本页]
作者: wqj 时间: 2023-12-10 00:38 标题: 【已解决】BAT代码怎么写,批量放置每4张图片到顺序文件夹?
本帖最后由 wqj 于 2024-1-1 18:28 编辑
批量放置每2张图片到顺序文件夹。
作者: Batcher 时间: 2023-12-10 09:43
回复 1# wqj
请给一个真实的例子说明一下你的需求吧,比如操作之前是怎样的,操作之后变成啥样?
如果需要上传文件,请用使用网盘。
如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: wqj 时间: 2023-12-10 09:58
本帖最后由 wqj 于 2023-12-10 10:00 编辑
需要的功能是,将bat所在目录(不含子文件夹)的 图片 ,按顺序依次一张或多张(自定义)的复制到所在目录的文件夹。 图片 格式是常见的格式:jpg,jpeg,png,bmp。
比如当前目录下有10个文件夹,20张 图片 :
1
2
3
4
5
6
7
8
9
10
。。。文件夹有10个文件夹
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
。。。。。20张图片顺序为1-20
想要的结果是:
如果设置每个文件夹移动进去2张 图片 ,那么结果是,按名称的进行排序的命名
1-2.jpg复制进1文件夹
3-4.jpg复制进2文件夹
5-6.jpg复制进3文件夹
作者: wqj 时间: 2023-12-10 10:01
@echo off
set "AvgNum=2"
cd /d "%~dp0"
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b /a-d ^| findstr /e /c:".jpg" /c:".jpeg" /c:".png" /c:".bmp"') do (
set fn=%%~ni
set /a "FolderCount=(!fn:~1!-1)/AvgNum+1"
if not exist "!FolderCount!" (
md "!FolderCount!"
)
move /y "%%i" "!FolderCount!\"
)
作者: wqj 时间: 2023-12-10 10:05
如何才能再实现设置每个文件夹移动进去2张 图片 ,那么结果是,按名称的进行逆序的命名
1-2.jpg复制进10文件夹
3-4.jpg复制进9文件夹
5-6.jpg复制进8文件夹
7-8.jpg复制进7文件夹
9-10.jpg复制进6文件夹
作者: wqj 时间: 2023-12-10 10:14
本帖最后由 wqj 于 2023-12-10 10:28 编辑
1
2
3
4
5
6
7
8
9
10
。。。文件夹有10个文件夹
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg
10.jpg
11.jpg
12.jpg
14.jpg
15.jpg
17.jpg
18.jpg
19.jpg
22.jpg
23.jpg
24.jpg
图片顺序不连续,仍按顺序不变每2张图片放1个文件夹。求大神帮忙看看。
作者: wqj 时间: 2023-12-10 10:28
[img][/img]
作者: ShowCode 时间: 2023-12-10 11:02
回复 6# wqj
图片顺序不连续V1.bat- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "MaxNum=2"
- for /l %%i in (1,1,10) do (
- md "%%i" 2>nul
- set "FileNum=0"
- for /l %%j in (1,1,100) do (
- if !FileNum! lss !MaxNum! (
- if exist "%%j.jpg" (
- move "%%j.jpg" "%%i\"
- set /a FileNum+=1
- ) else if exist "%%j.jpeg" (
- move "%%j.jpeg" "%%i\"
- set /a FileNum+=1
- ) else if exist "%%j.png" (
- move "%%j.png" "%%i\"
- set /a FileNum+=1
- ) else if exist "%%j.bmp" (
- move "%%j.bmp" "%%i\"
- set /a FileNum+=1
- )
- )
- )
- )
复制代码
作者: ShowCode 时间: 2023-12-10 11:06
回复 6# wqj
图片顺序不连续V2.bat- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "MaxNum=2"
- for /l %%i in (1,1,10) do (
- call :HandleFolder %%i
- )
-
- :HandleFolder
- md "%1" 2>nul
- set "FileNum=0"
- for /l %%j in (1,1,100) do (
- if !FileNum! lss !MaxNum! (
- if exist "%%j.jpg" (
- move "%%j.jpg" "%1\"
- set /a FileNum+=1
- ) else if exist "%%j.jpeg" (
- move "%%j.jpeg" "%1\"
- set /a FileNum+=1
- ) else if exist "%%j.png" (
- move "%%j.png" "%1\"
- set /a FileNum+=1
- ) else if exist "%%j.bmp" (
- move "%%j.bmp" "%1\"
- set /a FileNum+=1
- )
- ) else (
- goto :eof
- )
- )
复制代码
作者: wqj 时间: 2023-12-10 12:59
回复 9# ShowCode
感谢帮助,完美实现!
弱弱的再问一下?文件名换成这样,代码怎么修改!
新 (1).jpg
新 (2).jpg
新 (3).jpg
新 (4).jpg
新 (5).jpg
新 (6).jpg
新 (7).jpg
新 (8).jpg
新 (9).jpg
新 (10).jpg
作者: ShowCode 时间: 2023-12-10 13:11
回复 10# wqj
图片顺序不连续V1.1.bat- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "MaxNum=2"
- for /l %%i in (1,1,10) do (
- md "%%i" 2>nul
- set "FileNum=0"
- for /l %%j in (1,1,100) do (
- if !FileNum! lss !MaxNum! (
- if exist "新 (%%j).jpg" (
- move "新 (%%j).jpg" "%%i\"
- set /a FileNum+=1
- ) else if exist "新 (%%j).jpeg" (
- move "新 (%%j).jpeg" "%%i\"
- set /a FileNum+=1
- ) else if exist "新 (%%j).png" (
- move "新 (%%j).png" "%%i\"
- set /a FileNum+=1
- ) else if exist "新 (%%j).bmp" (
- move "新 (%%j).bmp" "%%i\"
- set /a FileNum+=1
- )
- )
- )
- )
复制代码
作者: wqj 时间: 2023-12-10 13:32
回复 11# ShowCode
抱歉,我搞错了,是文件夹名改成这样怎么修改。再帮帮忙,万分感谢!
新建(1)-
新建 (2)-
新建 (3)-
新建(4)-
新建 (5)-
新建 (6)-
新建 (7)-
新建 (8)-
新建 (9)-
新建 (10)-
作者: ShowCode 时间: 2023-12-10 14:26
回复 12# wqj
图片顺序不连续V1.2.bat- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "MaxNum=2"
- for /l %%i in (1,1,10) do (
- md "新建 (%%i)" 2>nul
- set "FileNum=0"
- for /l %%j in (1,1,100) do (
- if !FileNum! lss !MaxNum! (
- if exist "%%j.jpg" (
- move "%%j.jpg" "新建 (%%i)\"
- set /a FileNum+=1
- ) else if exist "%%j.jpeg" (
- move "%%j.jpeg" "新建 (%%i)\"
- set /a FileNum+=1
- ) else if exist "%%j.png" (
- move "%%j.png" "新建 (%%i)\"
- set /a FileNum+=1
- ) else if exist "%%j.bmp" (
- move "%%j.bmp" "新建 (%%i)\"
- set /a FileNum+=1
- )
- )
- )
- )
复制代码
作者: wqj 时间: 2023-12-10 18:28
如上代码每个文件夹移动进去2张 图片 ,怎样实现逆序放入文件夹?
1-2.jpg复制进文件夹10
3-4.jpg复制进文件夹9
5-6.jpg复制进文件夹8
7-8.jpg复制进文件夹7
9-10.jpg复制进文件夹6
作者: ShowCode 时间: 2023-12-10 18:35
回复 14# wqj
图片顺序不连续V1.3.bat- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "MaxNum=2"
- for /l %%i in (10,-1,1) do (
- md "新建 (%%i)" 2>nul
- set "FileNum=0"
- for /l %%j in (1,1,100) do (
- if !FileNum! lss !MaxNum! (
- if exist "%%j.jpg" (
- move "%%j.jpg" "新建 (%%i)\"
- set /a FileNum+=1
- ) else if exist "%%j.jpeg" (
- move "%%j.jpeg" "新建 (%%i)\"
- set /a FileNum+=1
- ) else if exist "%%j.png" (
- move "%%j.png" "新建 (%%i)\"
- set /a FileNum+=1
- ) else if exist "%%j.bmp" (
- move "%%j.bmp" "新建 (%%i)\"
- set /a FileNum+=1
- )
- )
- )
- )
复制代码
作者: wqj 时间: 2023-12-10 20:48
已解决,感谢大神帮助!
作者: wqj 时间: 2023-12-10 21:36
回复 15# ShowCode
拜谢大神!
作者: wqj 时间: 2023-12-12 09:17
本帖最后由 wqj 于 2023-12-12 10:07 编辑
回复 11# ShowCode
大神麻烦再请教一下?文件名换成这样,您写的代码怎么修改!
新0001.jpg
新0002.jpg
新0003.jpg
新0004.jpg
新0025.jpg
新0029.jpg
新0058.jpg
新0112.jpg
新0113.jpg
新0116.jpg
文件名始终保留4位数字
@echo off
cd /d "%~dp0"
setlocal enabledelayedexpansion
set "MaxNum=2"
for /l %%i in (1,1,10) do (
md "%%i" 2>nul
set "FileNum=0"
for /l %%j in (1,1,100) do (
if !FileNum! lss !MaxNum! (
if exist "新 (%%j).jpg" (
move "新 (%%j).jpg" "%%i\"
set /a FileNum+=1
) else if exist "新 (%%j).jpeg" (
move "新 (%%j).jpeg" "%%i\"
set /a FileNum+=1
) else if exist "新 (%%j).png" (
move "新 (%%j).png" "%%i\"
set /a FileNum+=1
) else if exist "新 (%%j).bmp" (
move "新 (%%j).bmp" "%%i\"
set /a FileNum+=1
)
)
)
)
作者: ShowCode 时间: 2023-12-12 09:40
回复 18# wqj
请按照2楼的步骤操作
作者: wqj 时间: 2023-12-12 10:09
回复 9# ShowCode
大神麻烦再请教一下?文件名换成这样,您写的代码怎么修改!
新0001.jpg
新0002.jpg
新0003.jpg
新0004.jpg
新0025.jpg
新0029.jpg
新0058.jpg
新0112.jpg
新0113.jpg
新0116.jpg
文件名始终保留4位数字
@echo off
cd /d "%~dp0"
setlocal enabledelayedexpansion
set "MaxNum=2"
for /l %%i in (1,1,10) do (
md "%%i" 2>nul
set "FileNum=0"
for /l %%j in (1,1,100) do (
if !FileNum! lss !MaxNum! (
if exist "新 (%%j).jpg" (
move "新 (%%j).jpg" "%%i\"
set /a FileNum+=1
) else if exist "新 (%%j).jpeg" (
move "新 (%%j).jpeg" "%%i\"
set /a FileNum+=1
) else if exist "新 (%%j).png" (
move "新 (%%j).png" "%%i\"
set /a FileNum+=1
) else if exist "新 (%%j).bmp" (
move "新 (%%j).bmp" "%%i\"
set /a FileNum+=1
)
)
)
)
作者: ShowCode 时间: 2023-12-12 10:23
回复 20# wqj
我写的代码不需要你重复的发出来。因为这对于我理解你的需求没有任何帮助。
我只需要知道需求是怎样。哪里的文件名换成这样?移动之前还是移动之后?
文字加截图描述清楚你的需求就够了。
具体步骤请看2楼。
作者: wqj 时间: 2023-12-12 10:42
本帖最后由 wqj 于 2023-12-12 10:44 编辑
回复 20# wqj
将类似于代码中这样的文件名 "新 (%%j).jpg"更换成下面这样
新0001.jpg
新0002.jpg
新0003.jpg
新0004.jpg
新0025.jpg
新0029.jpg
新0058.jpg
新0112.jpg
新0113.jpg
最小的文件名编号 新0001.jpg 最大的文件名编号 新0999.jpg 共上千张图片,每两个放一个文件夹,怎么在文件名序号前加0不会修改,没表述清楚,抱歉!
作者: wqj 时间: 2023-12-12 10:45
回复 21# ShowCode
将类似于代码中这样的文件名 "新 (%%j).jpg"更换成下面这样
新0001.jpg
新0002.jpg
新0003.jpg
新0004.jpg
新0025.jpg
新0029.jpg
新0058.jpg
新0112.jpg
新0113.jpg
最小的文件名编号 新0001.jpg 最大的文件名编号 新0999.jpg 共上千张图片,每两个放一个文件夹,怎么在文件名序号前加0不会修改,没表述清楚,抱歉!
作者: ShowCode 时间: 2023-12-12 11:15
回复 23# wqj - @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "MaxNum=2"
- for /l %%i in (1,1,10) do (
- md "%%i" 2>nul
- set "FileNum=0"
- for /l %%j in (10001,1,10999) do (
- set "FileSeq=%%j"
- set "FileSeq=!FileSeq:~-4!"
- if !FileNum! lss !MaxNum! (
- if exist "新!FileSeq!.jpg" (
- move "新!FileSeq!.jpg" "%%i\"
- set /a FileNum+=1
- ) else if exist "新!FileSeq!.jpeg" (
- move "新!FileSeq!.jpeg" "%%i\"
- set /a FileNum+=1
- ) else if exist "新!FileSeq!.png" (
- move "新!FileSeq!.png" "%%i\"
- set /a FileNum+=1
- ) else if exist "新!FileSeq!.bmp" (
- move "新!FileSeq!.bmp" "%%i\"
- set /a FileNum+=1
- )
- )
- )
- )
复制代码
作者: wqj 时间: 2023-12-12 12:43
回复 24# ShowCode
完美实现,对大神五体投地拜谢!
作者: wqj 时间: 2024-3-19 20:11
回复 24# ShowCode
大神,上述代码,如果文件夹已经存在,怎么修改代码? 拜谢!
作者: ShowCode 时间: 2024-3-20 21:54
回复 26# wqj
哪个文件夹已经存在?那种情况下24楼的代码结果和你希望的结果有什么差异?
作者: wqj 时间: 2024-3-21 13:22
本帖最后由 wqj 于 2024-3-21 13:57 编辑
回复 26# wqj
作者: wqj 时间: 2024-3-21 13:56
回复 27# ShowCode
大神! 24楼的代码,如果不用新建文件夹,就是文件夹已经存在,仍然两张照片放一个文件夹,怎么修改代码? 拜谢!
作者: qixiaobin0715 时间: 2024-3-21 16:15
回复 29# wqj
表述不清楚,要靠猜。是这样吗:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
- set /a m+=1
- set /a "n=(m-1)/2+1"
- move "%%i" "!n!\"
- )
- pause
复制代码
作者: wqj 时间: 2024-3-21 20:07
本帖最后由 wqj 于 2024-3-21 20:12 编辑
回复 30# qixiaobin0715
求教大神!文件夹名换成这样,代码怎么修改,每个文件夹名称的最后四位数字是固定的
(1)-4567
(2)-0235
(3)-3362
(4)-5578
(5)-6590
move "%%i" "!n!\" 这行代码怎么修改? 拜托大神!
作者: qixiaobin0715 时间: 2024-3-22 09:26
不是你想象的那样,只是修改move "%%i" "!n!\",代码需推翻重来。
所以需要一次性把问题说清楚,发现你都是说一半留一半。给想帮你的人带来多余的无用功。
作者: wqj 时间: 2024-3-22 12:37
本帖最后由 wqj 于 2024-3-22 12:39 编辑
回复 32# qixiaobin0715
抱歉,没有表述清楚,求大神帮忙!拜谢!
每个文件夹移动进去2张 图片 ,如:
1-2.jpg移动进文件夹1-××××
3-4.jpg移动进文件夹2-××××
5-6.jpg移动进文件夹3-××××
7-8.jpg移动进文件夹4-××××
9-10.jpg移动进文件夹5-××××
类似200张图片,每2张放入一个文件夹,文件夹编号-后都有4位数字
作者: 77七 时间: 2024-3-22 14:42
回复 33# wqj
为什么隔了一楼文件夹名称格式就变了
翻看前贴
文件名格式也变了吗?
建议发个新贴子,完整描述下需求。
作者: qixiaobin0715 时间: 2024-3-22 15:04
本帖最后由 qixiaobin0715 于 2024-3-22 15:11 编辑
回复 33# wqj - @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1-2 delims=-" %%i in ('dir /b /ad *-*') do (
- set /a n=%%i*2
- if exist "!n!.jpg" move "!n!.jpg" "%%i-%%j\"
- set /a n-=1
- if exist "!n!.jpg" move "!n!.jpg" "%%i-%%j\"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |