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

[文件操作] 批处理如何对多个文件夹内的图片各自分类呢?

比如:第一个文件夹H114文件夹内有以下命名的图片文件:
1、H1140009-F7C8LF-29-GW0102-OneSize-NO3-White-1-1-printArea-4860965.jpg
2、H1140009-F7C8LF-29-GW0102-OneSize-NO3-White-1-2-printArea-4860965.jpg
3、H1140004-CNR9M9-1-GW0103-OneSize-NO1-White-1-1-printArea-3831295.jpg
4、H1140004-CNR9M9-1-GW0103-OneSize-NO1-White-1-2-printArea-3831295.jpg
这个文件夹要分成两个文件夹,分别把1放入GW0102-1文件夹,把2这个图片放入GW0102-2这个文件夹。然后3、4这两张图片要放入GW0103这个文件夹内。第二个文件夹内H160文件夹内文件名字如下:
1、H1620001-EE2S7G-1-SG7080-27.5_x55_-NO1-White-1-printArea-4812860
2、H1620004-FQ4GUD-1-SG7080-31.5_x63_-NO1-White-1-printArea-4814306
3、H1620017-G8I8I6-1-SG7313-OneSize-NO1-White-1-printArea-4814536
这个文件夹要把1放入SG7080-800文件夹内,把2放入SG7080-900文件夹内,把3放入SG7313这个文件夹内。代码如下:
  1. cd /d "%~dp0"\H114"
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in ('dir /a-d/b "*GW0102-*-*-*-*-1*" 2^>nul') do (
  5. set /a n=1
  6. setlocal enabledelayedexpansion
  7. if not exist "GW0102-!n!" md "GW0102-!n!"
  8. move "%%a" "GW0102-!n!"
  9. endlocal
  10. )
  11. for /f "delims=" %%a in ('dir /a-d/b "*GW0102-*-*-*-1-2*" 2^>nul') do (
  12. set /a n=2
  13. set "f=%%a"
  14. setlocal enabledelayedexpansion
  15. if not exist "GW0102-!n!" md "GW0102-!n!"
  16. move "%%a" "GW0102-!n!"
  17. endlocal
  18. )
  19. for /f "delims=" %%a in ('dir /a-d/b "*GW0103*" 2^>nul') do (
  20. if not exist "GW0103" md "GW0103"
  21. move "%%a" "GW0103"
  22. endlocal
  23. )
  24. cd /d "%~dp0"\H160"
  25. @echo off
  26. setlocal enabledelayedexpansion
  27. for %%a in (*.jpg) do (
  28. for /f "tokens=4,5 delims=-(" %%i in ("%%~na") do (
  29. if not exist "%%~i-%%~j\." md "%%~i-%%~j"
  30. move "%%~a" "%%~i-%%~j\"
  31. )
  32. )
复制代码
但是这个代码只能分H160的,却不能分H114这个文件夹,如果单独使用的话又可以。请问下要怎么合在一起呢?

回复 1# feixiang8209


    请检查下代码是不是抄错了,有11个左括号,10个右括号。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


代码没错啊,分开都可以分类成功,但是合在同一个批处理文件内,就变成H114这个文件夹分成不成功,H160这个文件夹可以分成功。

TOP

回复 3# feixiang8209


请把以下3个bat文件打包压缩传上来我试试:
分开_H114.bat
分开_H160.bat
合并.bat
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# Batcher


   脚本已上传了,麻烦大神了,谢谢!!

TOP

回复 5# feixiang8209


参考Q-04把bat文件修改为ANSI编码
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"\H114
  4. for /f "delims=" %%a in ('dir /a-d /b "*GW0102-*-*-*-*-1*" 2^>nul') do (
  5.     set n=1
  6.     if not exist "GW0102-!n!" md "GW0102-!n!"
  7.     move "%%a" "GW0102-!n!"
  8. )
  9. for /f "delims=" %%a in ('dir /a-d /b "*GW0102-*-*-*-1-2*" 2^>nul') do (
  10.     set n=2
  11.     set "f=%%a"
  12.     if not exist "GW0102-!n!" md "GW0102-!n!"
  13.     move "%%a" "GW0102-!n!"
  14. )
  15. for /f "delims=" %%a in ('dir /a-d /b "*GW0103*" 2^>nul') do (
  16.     if not exist "GW0103" md "GW0103"
  17.     move "%%a" "GW0103"
  18. )
  19. cd /d "%~dp0"\H160"
  20. for %%a in (*.jpg) do (
  21.     for /f "tokens=4,5 delims=-(" %%i in ("%%~na") do (
  22.         if not exist "%%~i-%%~j\." md "%%~i-%%~j"
  23.         move "%%~a" "%%~i-%%~j\"
  24.     )
  25. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# Batcher


    谢谢大神,终于可以了

TOP

返回列表