Board logo

标题: [文本处理] 文件目录名如何用批处理正则处理? [打印本页]

作者: friendtasy    时间: 2014-9-3 10:28     标题: 文件目录名如何用批处理正则处理?

要求,把目录拖到批处理图标,按要求处理目录或文件名

文件名如(a10_XXX.DOC,B112_AAED.TXT)格式,目录就如D16_mm之类的,要求把a10_变为空值,重新命名文件名或目录名,如(a10_XXX.DOC变为XXX.DOC),处理可深入到子目录,现附以前求高手弄的一个批处理供参考修改,希望大侠能帮忙解决这个问题。
下划线前可能是不固定的字母数字组合
  1. @echo off
  2. rem 请不要修改本批处理,修改之后有可能运行不了
  3. rem 把要处理的文件夹拖到本批处理的图标上
  4. rem 如果是把文件拖到本本批处理的图标上,批处理不能正确执行
  5. mode con COLS=35 LINES=10
  6. call :tt
  7. setlocal enabledelayedexpansion
  8. :began
  9. cls
  10. for /f "delims=〓" %%i in ('dir "%~1\-*" /b /s') do  (
  11. set aa=%%~ni
  12. set aa2=%%~fi
  13. set aa2=!aa2:~-3!
  14. set aa=!aa:~1!
  15. attrib -r -s -h "%%~fi"
  16. echo  "!aa!%%~xi" >nul
  17. ren "%%~fi" "!aa!%%~xi"
  18. )
  19. shift
  20. if /i not "%~1" == "" goto began
  21. color 1b
  22. echo 文件已处理完
  23. echo 按任意键退出
  24. pause >nul
  25. goto :eof
  26. :tt
  27. title 批处理改名
  28. goto :eof
复制代码

作者: apang    时间: 2014-9-3 11:37

正则处理啊?
需要处理文件夹还是文件呢?
作者: terse    时间: 2014-9-3 17:07

  1. @echo off&setlocal enabledelayedexpansion
  2. if "%~1" == "" exit
  3. for /f "delims=" %%a in ('dir /b /s %1^|sort /r') do (
  4.     set "str=%%~nxa"
  5.     ren "%%a" "!str:*_=!"
  6. )
  7. pause
复制代码

作者: friendtasy    时间: 2014-9-6 23:24

terse 发表于 2014-9-3 17:07



    非常感谢,试用一下,应该能满足要求了,朋友dir 一条命令怎么分出文件和目录呢?以前我处理一些类似的会用DIR用参数区分文件和目录。




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