Board logo

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

作者: playinthesky    时间: 2015-3-26 01:35     标题: [已解决]批处理如何提取指定末尾字段的文件名,并建立文件夹

有上万个这样的文件:

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 状态为关闭,我试了很多次,也不行。
作者: pcl_test    时间: 2015-3-26 10:14

本帖最后由 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
复制代码

作者: pcl_test    时间: 2015-3-26 10:15

回复 1# playinthesky
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
作者: playinthesky    时间: 2015-3-26 10:53

回复 3# pcl_test


    谢谢老大的妙来神笔,永远支持你,永远支持批处理!!!马上改!
作者: apang    时间: 2015-3-26 10:59

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

作者: playinthesky    时间: 2015-3-26 21:34

回复 5# apang


    谢谢您的指点!




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