Board logo

标题: [文件操作] 请大神赐教图片按文件名的批处理 [打印本页]

作者: feixiang8209    时间: 2020-4-3 16:45     标题: 请大神赐教图片按文件名的批处理

本人每天有一堆的图片要进行分类,
每个文件夹内的图片文件名所需创建的文件夹位置都不一样,如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

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

回复 1# feixiang8209


    说实话,我看不懂你的规则。。。
作者: Batcher    时间: 2020-4-3 17:28

回复 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. )
复制代码

作者: feixiang8209    时间: 2020-4-3 21:43

回复 3# Batcher
谢谢大神指点迷津,谢谢!!
作者: feixiang8209    时间: 2020-4-4 11:16

回复 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
想再请教下这两个红色文字不在同一位置上但是在同一文件夹下的要怎么样提取出来做文件名?
作者: Batcher    时间: 2020-4-6 10:39

回复 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. )
复制代码





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