Board logo

标题: [日期时间] 批处理如何将多张按日期时间命名的图片按时间顺序顺次每个文件夹放一张? [打印本页]

作者: wqj    时间: 2024-1-1 22:32     标题: 批处理如何将多张按日期时间命名的图片按时间顺序顺次每个文件夹放一张?

求助!如何将多张按日期时间命名的图片按时间顺序顺次每个文件夹放一张!
图2024-01-01 00-01-33.jpg
图2024-01-01 02-11-22.jpg
图2024-01-01 08-20-55.jpg
图2024-01-01 13-05-03.jpg
图2024-01-01 23-09-59.jpg
图2024-01-02 02-52-18.jpg

将多张按日期时间命名的图片按时间顺序顺次每个文件夹放一张!
新建文件夹(1)
新建文件夹(2)
新建文件夹(3)
新建文件夹(4)
新建文件夹(5)
新建文件夹(6)
作者: qixiaobin0715    时间: 2024-1-2 14:56

批处理文件保存为ANSI编码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  4.     set /a n+=1
  5.     copy "%%i" "新建文件夹(!n!)\">nul 2>nul
  6. )
  7. pause
复制代码

作者: wqj    时间: 2024-1-2 16:11

回复 2# qixiaobin0715


    操作失败,变成改名了,大神再帮忙看看!
作者: ShowCode    时间: 2024-1-2 21:46

回复 1# wqj
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  5.     set /a n+=1
  6.     md "新建文件夹(!n!)" 2>nul
  7.     copy "%%i" "新建文件夹(!n!)\"
  8. )
  9. pause
复制代码

作者: qixiaobin0715    时间: 2024-1-3 10:30

回复 3# wqj
是你没有描述清楚,我以为文件夹你已经提前创建好了呢。看看4楼代码吧。
作者: wqj    时间: 2024-1-3 11:53

本帖最后由 wqj 于 2024-1-3 13:01 编辑

回复 5# qixiaobin0715


    抱歉,没表述清楚,弱弱的再问一下,上面文件夹的序号后如果添加任意字符串代码怎么修改?
新建文件夹(1)aaaa
新建文件夹(2)fggg
新建文件夹(3)rrrr
新建文件夹(4)jjjj
新建文件夹(5)bvvj
作者: qixiaobin0715    时间: 2024-1-3 15:55

如果像你所举例子那样文件夹名序号后面都添加4个任意小写字母的话,自己测试一下:
  1. @echo off
  2. set Letters=a b c d e f g h i j k l m n o p q r s t u v w x y z
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  5.     set /a n+=1
  6.     setlocal enabledelayedexpansion
  7.     for /l %%a in (1,1,4) do (
  8.         for %%b in (%Letters%) do (
  9.             set /a m+=1
  10.             set _!random!-!m!=%%b
  11.         )
  12.         for /f "skip=25 tokens=2 delims==" %%c in ('set _') do (
  13.             set str=!str!%%c
  14.         )
  15.     )
  16.     md "新建文件夹(!n!)!str!\" 2>nul
  17.     copy "%%i" "新建文件夹(!n!)!str!\">nul 2>nul
  18.     endlocal
  19. )
  20. pause
复制代码

作者: wqj    时间: 2024-1-3 19:36

本帖最后由 wqj 于 2024-1-3 19:38 编辑

文件夹已经存在,且每个文件夹名称编号后有4位无规律的数字,如何修改代码,大神再请教!
将多张按日期时间命名的图片按时间顺序顺次每个文件夹放一张!

新建文件夹(1)4567
新建文件夹(2)0235
新建文件夹(3)3362
新建文件夹(4)5578
新建文件夹(5)6590
作者: /zhqsystem/zhq    时间: 2024-1-3 20:11

本帖最后由 /zhqsystem/zhq 于 2024-1-3 20:24 编辑
  1. @Echo Off&Color 0e&SetLocal EnableDelayedExpansion
  2. for /f "delims=" %%i in ('dir/a-d/on/s/b ".\*.jpg"')do (
  3. set "#=%%~ni"&&set "#=!#:-=!"&&set "#=!#: =!"&for /l %%n in (1,1,4)do call:r %%n
  4. set/a "n+=1"&&set "$=!n!"&for /l %%n in (1,1,10)do set "$=0!$!"
  5. set "$=!$:~-10!"
  6. >>"%~dpn0回退.bat" (echo,md "%cd%"^&move "%cd%\文件夹!$!_!R_1!!R_2!!R_3!!R_4!\%%~nxi" "%%~dpi"^&rd "%cd%\文件夹!$!_!R_1!!R_2!!R_3!!R_4!")
  7. md ".\文件夹!$!_!R_1!!R_2!!R_3!!R_4!\"
  8. move "%%~fi" ".\文件夹!$!_!R_1!!R_2!!R_3!!R_4!\"
  9. )
  10. >>"%~dpn0回退.bat" echo,del/q "%~dpn0回退.bat"^&exit
  11. pause
  12. goto:eof
  13. :R
  14. set/a "r_%~1=%Random%%%10"
  15. goto:eof
复制代码

作者: wqj    时间: 2024-1-3 20:56

回复 9# /zhqsystem/zhq


    文件夹已经存在,不需要再新新建文件夹,只是现有的每个文件夹名称编号后有4位无规律的数字,如何修改代码,大神再请教!
将多张按日期时间命名的图片按时间顺序顺次每个文件夹放一张!

新建文件夹(1)4567
新建文件夹(2)0235
新建文件夹(3)3362
新建文件夹(4)5578
新建文件夹(5)6590
........一直到编号新建文件夹(100)6550,每个文件夹名称编号后有4位数字,每个文件夹内按顺序放一张图片。感谢大神帮忙,拜谢!
作者: ShowCode    时间: 2024-1-3 22:28

回复 10# wqj


资源管理器里面,10会排在2前面:
新建文件夹(10)xxxx
新建文件夹(2)xxxx

你考虑一下需要是否要变更为:
新建文件夹(001)xxxx
新建文件夹(002)xxxx
新建文件夹(...)xxxx
新建文件夹(010)xxxx
新建文件夹(...)xxxx
新建文件夹(100)xxxx
作者: wqj    时间: 2024-1-3 22:58

回复 11# ShowCode


    这样的可以吗:
新建文件夹(01)xxxx
新建文件夹(02)xxxx
新建文件夹(...)xxxx
新建文件夹(10)xxxx
新建文件夹(...)xxxx
新建文件夹(100)xxxx
作者: qixiaobin0715    时间: 2024-1-4 09:59

回复 12# wqj
01--99是可以使用较为简化的代码处理的。
实际上就是把数字都统一变成相同个数,处理起来就要简单多了。
作者: qixiaobin0715    时间: 2024-1-4 10:04

本帖最后由 qixiaobin0715 于 2024-1-4 10:56 编辑

回复 8# wqj
针对8楼的情况,这样试试看:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  4.     set /a n+=1
  5.     for /f "delims=" %%j in ('dir /b /ad "新建文件夹(!n!)*"') do (
  6.         copy "%%i" "%%j\">nul 2>nul
  7.     )
  8. )
  9. pause
复制代码

作者: wqj    时间: 2024-1-4 10:06

回复 13# qixiaobin0715


       01-99如果这样的也可以,感谢大神帮忙改一下代码,拜谢!
新建文件夹(01)xxxx
新建文件夹(02)xxxx
新建文件夹(...)xxxx
新建文件夹(10)xxxx
新建文件夹(...)xxxx
新建文件夹(99)xxxx
作者: qixiaobin0715    时间: 2024-1-4 10:12

本帖最后由 qixiaobin0715 于 2024-1-4 10:57 编辑

15楼的情况,这样试试
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. dir /b /a-d *.jpg>temp
  4. (for /f "delims=" %%i in ('dir /b /ad') do (
  5.     set /p str=
  6.     copy "!str!" "%%i">nul 2>nul
  7. ))<temp
  8. del temp
  9. pause
复制代码

作者: wqj    时间: 2024-1-4 12:34

回复 13# qixiaobin0715


    编号 (10)以下的可以正常了,但是10以上的就出现错误了,不知道问题出在哪儿,我晕!
作者: qixiaobin0715    时间: 2024-1-4 15:57

回复 17# wqj
你可以把测试文件发到网盘上,我帮你测试一下,看看是哪里的问题




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