[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 1# 228630386


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

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 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
复制代码
1

评分人数

TOP

本帖最后由 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
复制代码

TOP

回复 3# aloha20200628


    测试了,多级目录也可以实现,非常感谢。

TOP

回复 4# qixiaobin0715


    运行后没有反应。

TOP

  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位是否与文件夹名相同,方便多次归入。
bat小白,请多指教!谢谢!

TOP

返回列表