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

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

[复制链接]
发表于 2020-4-15 17:17:38 | 显示全部楼层 |阅读模式
本帖最后由 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. )
复制代码
这代码只能提取两个字段的代码,要如何修改呢?
发表于 2020-4-15 19:10:09 | 显示全部楼层
回复 1# feixiang8209


    这个要提取的字符有没有什么共同特征?比如都以SJ开头。
  另外,不要用闪字,看着难受
 楼主| 发表于 2020-4-16 08:33:13 | 显示全部楼层
回复 2# wujunkai
都是以SJ开头的
发表于 2020-4-16 08:56:21 | 显示全部楼层
回复 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技术 +1 收起 理由
feixiang8209 + 1 谢谢大神,可以了

查看全部评分

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

本版积分规则

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

GMT+8, 2026-3-19 19:26 , Processed in 0.018309 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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