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

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

本帖最后由 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. )
复制代码
这代码只能提取两个字段的代码,要如何修改呢?

回复 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的想法,建议先备份文件
1

评分人数

TOP

回复 2# wujunkai
都是以SJ开头的

TOP

回复 1# feixiang8209


    这个要提取的字符有没有什么共同特征?比如都以SJ开头。
  另外,不要用闪字,看着难受

TOP

返回列表