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

[文件操作] 请大神赐教图片按文件名的批处理

本人每天有一堆的图片要进行分类,
每个文件夹内的图片文件名所需创建的文件夹位置都不一样,如N1文件夹内的图片命名规则如下:
N10035-AKDWLP-1-IP60D--OneSize-NO1-Black-1-printArea-3123084.png
N10001-Q84OP6-1-IP70D--OneSize-NO1-Black-1-printArea-3124961.png
N10039-BJ35QX-1-IP80X--OneSize-NO1-Black-1-printArea-3118892.png
N10036-6PY6HZ-1-IP600--OneSize-NO1-Black-1-printArea-2701364.png
N10011-IBCEUC-1-IP700--OneSize-NO1-Black-1-printArea-2838165.png
N10038-CUJHO7-1-SS7E--OneSize-NO1-Black-1-printArea-3126886.png
]要创建以上这样的文件夹对图片进行归类。
N2文件夹的图片命名规则如下:
N40018-7CJRW4-1-IPD10-OneSize-NO1-10.2_-1-printArea-3126582.png
N40002-88HOEW-1-IPD10-OneSize-NO1-10.5_-1-printArea-3123786.png
N40011-677NFR-1-IPDM4-iPadair1-29.7_-NO1-Black-1-printArea-3120165.png
N40037-NC4QES-1-IPDM4-iPadmini4-57.9_-NO1-Black-1-printArea-3123785.png
创建以上这样的文件夹对图片进行归类。
但是用以下这个代码,只能对指定位置的字母串取值并给文件夹命名,而且只能在当前文件夹内才能使用。
@echo off


setlocal enabledelayedexpansion


for %%a in (*.png) do (


set "NameStr=%%~a"


if not exist "!NameStr:~18,5!" md "!NameStr:~ 18,5!"


move "%%~a" "!NameStr:~ 18,5!\"


)


pause


exit

我想请教的是,这代码要如何修改才能实现在根目录下,实现对各个文件夹按各自的规则创建文件夹名并对有相应名字的图片进行归类。

回复 1# feixiang8209


    说实话,我看不懂你的规则。。。

TOP

回复 1# feixiang8209


test.bat
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 请自行设置N1文件夹完整路径
  4. cd /d "D:\Test\N1"
  5. for /f "delims=" %%a in ('dir /b /a-d *.png') do (
  6.     for /f "tokens=4 delims=-" %%b in ("%%a") do (
  7.         set "folder=%%b
  8.         if not exist "!folder!" (
  9.             md "!folder!"
  10.         )
  11.     )
  12.     move /y "%%a" "!folder!"
  13. )
  14. REM 请自行设置N2文件夹完整路径
  15. cd /d "D:\Test\N2"
  16. for /f "delims=" %%a in ('dir /b /a-d *.png') do (
  17.     for /f "tokens=7 delims=-_" %%b in ("%%a") do (
  18.         set "folder=%%b
  19.         if not exist "!folder!" (
  20.             md "!folder!"
  21.         )
  22.     )
  23.     move /y "%%a" "!folder!"
  24. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Batcher
谢谢大神指点迷津,谢谢!!

TOP

回复 3# Batcher
N40003-5OGTYO-1-IPD10-OneSize-NO1-10.5_-1-printArea-3119806.png
N40016-KFFQGX-1-IPDM4-iPadair1-29.7_-NO1-Black-1-printArea-3123426.png
想再请教下这两个红色文字不在同一位置上但是在同一文件夹下的要怎么样提取出来做文件名?

TOP

回复 5# feixiang8209


处理5楼情况.bat
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 请自行设置5楼文件夹完整路径
  4. cd /d "D:\Test\N5"
  5. for /f "delims=" %%a in ('dir /b /a-d *.png') do (
  6.     for /f "delims=_" %%b in ("%%a") do (
  7.         set "folderL=%%b"
  8.     )
  9.     set "folderL=!folderL:-= !"
  10.     for %%b in (!folderL!) do (
  11.         set "folderN=%%b
  12.     )
  13.     if not exist "!folderN!" (
  14.         md "!folderN!"
  15.     )
  16.     move /y "%%a" "!folderN!"
  17. )
复制代码
1

评分人数

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

TOP

返回列表