Board logo

标题: [文件操作] 批处理怎么样才能提取不同位置的字符来做为文件夹名? [打印本页]

作者: feixiang8209    时间: 2020-4-15 17:17     标题: 批处理怎么样才能提取不同位置的字符来做为文件夹名?

本帖最后由 feixiang8209 于 2020-4-16 08:34 编辑

N290007-MCNQRP-1-IPB78-SJ002-OneSize-NO1-Black-1-2-printArea-3122035.png
N290001-JW5CZY-1-IPBXS-SJ001-OneSize-NO1-Black-1-2-printArea-2725039.png
N160006-RHLGVP-1-SJ001--OneSize-NO1-White-1-printArea-2635212.png
N160010-WP6AY2-1-SJ002--OneSize-NO1-White-1-printArea-2662476.png

一个文件夹内分别有以上两种不同长度字段的文件名,要如何同时提取红色标注的文字为文件名,并移动相应的图片到各自的文件夹呢?
  1. @echo off
  2. for %%a in (*.png) do (
  3. for /f "tokens=4,5 delims=-(" %%i in ("%%~na") do (
  4. if not exist "%%~i-%%~j\." md "%%~i-%%~j"
  5. move "%%~a" "%%~i-%%~j\"
  6. )
  7. )
复制代码
这代码只能提取两个字段的代码,要如何修改呢?
作者: wujunkai    时间: 2020-4-15 19:10

回复 1# feixiang8209


    这个要提取的字符有没有什么共同特征?比如都以SJ开头。
  另外,不要用闪字,看着难受
作者: feixiang8209    时间: 2020-4-16 08:33

回复 2# wujunkai
都是以SJ开头的
作者: wujunkai    时间: 2020-4-16 08:56

回复 3# feixiang8209
  1. @echo off & setlocal enabledelayedexpansion
  2. :main
  3.     for /R %%i in (*.png) do (
  4.         for /F "tokens=4,5 delims=-" %%j in ("%%i") do (
  5.             set "SJ=%%j"
  6.             if "!SJ:~0,2!"=="SJ" ('
  7.                 md "%%j"
  8.                 echo move "%%i" "%%j\"
  9.             )
  10.             set "SJ=%%k"
  11.             if "!SJ:~0,2!"=="SJ" (
  12.                 md "%%k"
  13.                 echo move "%%i" "%%k\"
  14.             )
  15.         )
  16.     )
  17. pause
  18. goto:eof
复制代码
确认无误后删掉echo
我不是很懂move的想法,建议先备份文件




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