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

[文件操作] [已解决]批处理如何提取指定末尾字段的文件名,并建立文件夹

[复制链接]
发表于 2015-3-26 01:35:15 | 显示全部楼层 |阅读模式
有上万个这样的文件:

J000-2004-永久-00001-001.jpg
J000-2001-永久-00003-005.jpg
J000-2001-永久-00002-003.jpg
J000-2004-永久-00002-003.jpg
J000-2001-永久-00003-003.jpg
J000-2001-永久-00003-007.jpg
J000-2001-永久-00003-003.jpg
J000-2005-永久-00003-008.jpg
J000-2001-永久-00005-003.jpg
J000-2001-永久-00003-008.jpg
J000-2007-永久-00009-003.jpg
J000-2001-永久-00003-009.jpg
.
.
.
.
.
J000-2010-30年-00112-003.jpg
J000-2001-长期-00993-009.jpg

实现目标是:将第四位的最后一个字符为特定数字的文件提取出来,建立对应的文件夹,

比方:我选末尾数字为2的,也有可能是其他数字,比方,6,9,如果末尾是0的话,会不会特殊点?

那么,最后实现的是:

J000-2001-永久-00002-003.jpg         放在   2/J000-2001-永久-00002/ 的文件夹下
J000-2004-永久-00002-003.jpg         放在   2/J000-2004-永久-00002 /的文件夹下
J000-2010-30年-00112-003.jpg        放在   2/J000-2010-30年-00112/的文件夹下


我的思路及写了一半的代码,高手能否帮助我完善?

截取第4段字符,用SET,然后通过IF语句判断!,但是后面建文件夹,如何建立的流畅与快速(上万个),不太会写!能否帮我完成,谢谢各位高手们!

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=4 delims=-" %%i in  ('dir /b /a-d *.jpg') do (
  3.         set "ph=%~dp0"
  4.         set "str=%%i"
  5.                 set "str=!str:~-1,1!"
  6.         if  !str! equ 2 md      
  7. )
  8. pause
复制代码
是否有更高效率的办法?

用我自己的办法MD文件之后,总是提出ECHO 状态为关闭,我试了很多次,也不行。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-3-26 10:14:46 | 显示全部楼层
本帖最后由 pcl_test 于 2015-3-26 10:16 编辑

回复 1# playinthesky
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=1-4 delims=-" %%a in  ('dir /b /a-d *.jpg') do (
  3. set "str=%%a-%%b-%%c-%%d"
  4. set "str=!str:~,-1!"
  5. ::如需同时处理其他数字,在下面括号里自行添加,如(2 6 9)
  6. for %%i in (2) do (
  7. if exist "!str!%%i-*.jpg" md "%%i\!str!%%i" 2>nul
  8. move "!str!%%i-*.jpg" "%%i\!str!%%i" 2>nul
  9. )
  10. )
  11. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-3-26 10:15:31 | 显示全部楼层
回复 1# playinthesky
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
 楼主| 发表于 2015-3-26 10:53:43 | 显示全部楼层
回复 3# pcl_test


    谢谢老大的妙来神笔,永远支持你,永远支持批处理!!!马上改!
发表于 2015-3-26 10:59:38 | 显示全部楼层
  1. @secho off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=1-5delims=-" %%a in ('dir /b *-*-*-*2-*.jpg *-*-*-*6-*.jpg') do (
  4.         set "s=%%a-%%b-%%c-%%d"
  5.         md "!s:~-1!\!s!"
  6.         move "!s!-%%e" "!s:~-1!\!s!"
  7. )) 2>nul
  8. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-3-26 21:34:09 | 显示全部楼层
回复 5# apang


    谢谢您的指点!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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