Board logo

标题: [文件操作] 【已解决】文件夹中是否可以批处理建文件夹将前17位相同名称的图片放在一起? [打印本页]

作者: 228630386    时间: 2024-10-18 20:56     标题: 【已解决】文件夹中是否可以批处理建文件夹将前17位相同名称的图片放在一起?

本帖最后由 228630386 于 2024-10-19 11:32 编辑

整个文件夹都是JPG图片,BA003022P010O23ECD.jpg、BA003022P010O23ECF.jpg、BA003022P010O23ECT.jpg、BA003022P010O23ECD.jpg、BA003022P010O23ECE.jpg,能否将前缀17位相同的图片,放在新建文件夹BA003022P010O23EC中,整个文件夹的图片都是这个规率,是否能用批处理操作,多级目前不同的文件夹都可以进行批量合并,不用一个个文件夹进去运行呢?
作者: Batcher    时间: 2024-10-18 22:23

回复 1# 228630386


请把你的“多级目前不同的文件夹”截图出来看看,我试试。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: aloha20200628    时间: 2024-10-18 23:23

本帖最后由 aloha20200628 于 2024-10-19 11:08 编辑

回复 1# 228630386

先给一个版本
以下代码存为 test.bat 运行,将当前目录下及其各子目录中符合匹配条件(须前缀17个字符相同)的目标文件 *.jpg (忽略单个文件)移入对应的新建子目录中...
  1. @echo off &setlocal &(dir /b/s/ad|sort /r &echo,%cd%)>"all.d"
  2. for /f "delims=" %%d in (all.d) do for %%F in ("%%d\*.jpg") do (
  3.    set "nF=%%~nF" &setlocal enabledelayedexpansion &set "nF17=!nF:~,17!"
  4.    for /f %%n in ('dir /b/a-d "%%d\!nF17!*%%~xF"^|find /c /v "" ') do if %%n gtr 1 (
  5.        md "%%d\!nF17!"
  6.        move /y "%%d\!nF17!*%%~xF" "%%d\!nF17!"
  7.    ) 2>ul
  8.    endlocal
  9. )
  10. del/q "all.d"&endlocal&pause&exit/b
复制代码

作者: qixiaobin0715    时间: 2024-10-19 09:01

本帖最后由 qixiaobin0715 于 2024-10-19 09:09 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /s /ad^|sort /r') do (
  4.     cd /d "%%i"
  5.     if exist "*.jpg" (
  6.         for %%j in (*.jpg) do (
  7.             set str=%%~nj
  8.             set str=!str:~,17!
  9.             if not exist "!str!" md "!str!"
  10.             move "!str!*.jpg" "!str!\"
  11.         )>nul 2>nul
  12.     )
  13. )
  14. pause
复制代码

作者: 228630386    时间: 2024-10-19 11:30

回复 3# aloha20200628


    测试了,多级目录也可以实现,非常感谢。
作者: 228630386    时间: 2024-10-19 11:31

回复 4# qixiaobin0715


    运行后没有反应。
作者: 77七    时间: 2024-10-19 20:04

  1. @echo off
  2. cd /d "%~dp0"
  3. set m=17
  4. for /f "delims=" %%d in ('dir /b /s /ad') do (
  5. set f=%%d
  6. set d=%%~nxd
  7. for /f "delims=" %%i in ('2^>nul dir /b /a-d "%%d\*.jpg"') do (
  8. set n=%%~ni.
  9. setlocal enabledelayedexpansion
  10. if "!n:~%m%,1!" neq "" (
  11. if /i "!n:~0,%m%!" neq "!d!" (
  12. md "!f!\!n:~0,%m%!" 2>nul
  13. move "!f!\!n:~0,-1!%%~xi" "!f!\!n:~0,%m%!\"
  14. )
  15. )
  16. endlocal
  17. )
  18. )
  19. pause
复制代码

判断了文件名前17位是否与文件夹名相同,方便多次归入。




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