找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 34072|回复: 5

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

[复制链接]
发表于 2020-4-3 16:45:54 | 显示全部楼层 |阅读模式
本人每天有一堆的图片要进行分类,
每个文件夹内的图片文件名所需创建的文件夹位置都不一样,如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

我想请教的是,这代码要如何修改才能实现在根目录下,实现对各个文件夹按各自的规则创建文件夹名并对有相应名字的图片进行归类。
发表于 2020-4-3 16:57:28 | 显示全部楼层
回复 1# feixiang8209


    说实话,我看不懂你的规则。。。
发表于 2020-4-3 17:28:56 | 显示全部楼层
回复 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. )
复制代码
 楼主| 发表于 2020-4-3 21:43:02 | 显示全部楼层
回复 3# Batcher
谢谢大神指点迷津,谢谢!!
 楼主| 发表于 2020-4-4 11:16:10 | 显示全部楼层
回复 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
想再请教下这两个红色文字不在同一位置上但是在同一文件夹下的要怎么样提取出来做文件名?
发表于 2020-4-6 10:39:57 | 显示全部楼层
回复 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技术 +1 收起 理由
feixiang8209 + 1 谢谢大神

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 23:09 , Processed in 0.033170 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表