Board logo

标题: [文件操作] [已解决]请问如何用BAT批量修改文件名? [打印本页]

作者: YYEnigma    时间: 2012-11-7 17:02     标题: [已解决]请问如何用BAT批量修改文件名?

是一些型号代码,结构为字母+数字,我想用bat批量改文件名,再所有文件名中字母和数字之间插入“_”符号
以下列举型号代码
KC50E窗机.doc               →修改后为     KC_50_E窗机.doc
KFR35GWP壁挂分体.doc        →修改后为     KFR_35_GWP壁挂分体.doc
WD75WU立机.doc             →修改后为     WD_75_WU立机.doc
作者: BAT-VBS    时间: 2012-11-7 17:22

  1. sed -r "s/^([A-Z]+)([0-9]+)([A-Z]+)/\1_\2_\3/" a.txt >b.txt
复制代码

作者: YYEnigma    时间: 2012-11-7 17:40

回复 2# BAT-VBS


    不好意思偶没有说的很清楚是文件 请问你这个代码怎么用?
作者: tmplinshi    时间: 2012-11-7 17:46

  1. ren2 -f "([a-zA-Z]*)(\d+)(.*)" "$1_$2_$3"
复制代码
ren2.exe 下载地址: http://www.lomont.org/Software/Utilities/Ren2/ren2.exe
作者: BAT-VBS    时间: 2012-11-7 18:01

回复 3# YYEnigma


    直接用
作者: YYEnigma    时间: 2012-11-7 18:12

万分感谢tmplinshi 班主的回答 试过了 可以用
作者: YYEnigma    时间: 2012-11-7 18:13

回复 4# tmplinshi


    万分感谢tmplinshi 班主的回答 试过了 可以用, 但能不能写个批处理来解决啊? 我更想知道 批处理是如何定义查找数字与字母之间的
作者: BAT-VBS    时间: 2012-11-7 18:52

回复 7# YYEnigma


    BAT没有直接的方法,必须自己写代码做判断,目测代码会比较长、比较复杂。
作者: Batcher    时间: 2012-11-7 18:53

sed.exe 下载地址:
http://www.bathome.net/thread-1114-1-1.html
作者: tmplinshi    时间: 2012-11-7 20:10

本帖最后由 tmplinshi 于 2012-11-7 20:12 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set find_files="dir /b *.doc | findstr [a-zA-Z][a-zA-Z]*[0-9][0-9]*.*"
  4. for /f "delims=" %%a in (' %find_files% ') do (
  5.     set fname=%%a
  6.    
  7.     for /f "delims=0123456789 tokens=1,*" %%b in ("%%a") do (
  8.         set n=1!fname:*%%b=!
  9.         set /a n = n
  10.         set n=!n:~1!
  11.         
  12.         echo !fname! --^> %%b_!n!_%%c
  13.         ren "!fname!" "%%b_!n!_%%c"
  14.     )
  15. )
  16. pause
复制代码

作者: YYEnigma    时间: 2012-11-7 21:17

回复 10# tmplinshi


    tmplinshi 版主真伟大啊!学习了 真的很感谢你写的代码 非常好用




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