Board logo

标题: [文件操作] 求改名的BAT批处理代码 [打印本页]

作者: tt-xb    时间: 2014-1-12 00:02     标题: 求改名的BAT批处理代码

有一个以日期为名称的文件夹形式如2014.01.12
里边有一堆以“Scene1_001.wav”等命名的文件数字从001开始逐个递增(可能会有上百个)
还有一些以“Scene1_003.pjt”命名的文件夹,数字不固定,且出现规律不固定,一旦出现文件夹就不会出现对应数字的.wav文件,文件夹内包括1.wav 2.wav 3.wav 4.wav四个文件
有一个写好字符的文档001.txt
形式如下:
03-15-02-08
03-15-02-09
08-12-14-10
09-25-12-01
15-18-04-01
20-02-05-10
18-38-23-05
想达到的效果:
将日期文件夹里的文件名逐个改成001.txt里的名字
例如:001.txt里第一行文字为03-12-02-08就把Scene1_001.wav的名字改成03-12-02-08.wav
         遇到文件夹性质的文件如Scene1_003.pjt内有四个文件1.wav 2.wav 3.wav 4.wav
         对应的001.txt内名字第三行为08-12-14-10,就把文件夹名字改成08-12-14-10
         并把里边的四个文件改成08-12-14-10-1.wav 08-12-14-10-2.wav 08-12-14-10-3.wav 08-12-14-10-4.wav
小弟新人,希望各位大神给力协助,再此先谢过!
作者: tt-xb    时间: 2014-1-12 10:41

回复 1# tt-xb


    各位哦大神求救啊,自己顶
作者: apang    时间: 2014-1-12 17:54

本帖最后由 apang 于 2014-1-12 18:05 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. set n=1000
  3. for /f "delims=" %%a in (001.txt) do set /a n+=1 & set "_!n:~1!=%%a"
  4. for /f "tokens=1*delims=_" %%a in ('dir /b Scene1_*.wav Scene1_*.pjt') do (
  5.     if not "!_%%~nb!"=="" (
  6.         if /i "%%~xb"==".pjt" (
  7.             set "m="
  8.             for /f "delims=" %%c in ('dir /a-d /b "%%a_%%b\*.wav"') do (
  9.                 set /a m+=1
  10.                 echo,Ren "%%a_%%b\%%c" "!_%%~nb!-!m!%%~xc"
  11.             )
  12.         )
  13.         echo,Ren "%%a_%%b" "!_%%~nb!%%~xb!"
  14.     )
  15. )
  16. pause
复制代码

作者: tt-xb    时间: 2014-1-12 23:53

回复 3# apang


    高手你好,用你的代码我执行了一下,结果如下

Ren "Scene1_001.wav" "03-15-02-08.wav"
Ren "Scene1_002.wav" "03-15-02-09.wav"
Ren "Scene1_004.wav" "09-25-12-01.wav"
Ren "Scene1_005.wav" "15-18-04-01.wav"
Ren "Scene1_006.wav" "20-02-05-10.wav"
Ren "Scene1_007.wav" "18-38-23-05.wav"
Ren "Scene1_003.pjt\1.wav" "08-12-14-10-1.wav"
Ren "Scene1_003.pjt\2.wav" "08-12-14-10-2.wav"
Ren "Scene1_003.pjt\3.wav" "08-12-14-10-3.wav"
Ren "Scene1_003.pjt\4.wav" "08-12-14-10-4.wav"
Ren "Scene1_003.pjt" "08-12-14-10.pjt"
请按任意键继续. . .
但是文件的名字并没有改变,还是以前的Scene_001的形式
作者: tt-xb    时间: 2014-1-12 23:54

回复 4# tt-xb


    Scene1_001.wav的这种形式
作者: DAIC    时间: 2014-1-13 08:50

回复 4# tt-xb


把第10行和13行的 echo, 删掉
作者: tt-xb    时间: 2014-1-13 18:02

回复 6# DAIC


   谢谢,现在可以了,不过又有一个小问题,希望您能帮忙,因为txt内的字符每天都不一样,现在指定001.txt,时间长了会出现很多001.txt,可能在看的时候会混淆,我可不可以不指定001.txt,而是使用文件夹内唯一一个任意名称的txt文件。
作者: DAIC    时间: 2014-1-13 21:06

回复 7# tt-xb


    用时间戳,比如 2014-01-13_21-06.txt




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