Board logo

标题: [文件操作] 批处理如何按照TXT列表内的名称修改文件名? [打印本页]

作者: 老卡机    时间: 2014-11-7 09:18     标题: 批处理如何按照TXT列表内的名称修改文件名?

例如文件夹内有很多中英文歌曲,
小苹果.mp3
Play 我呸.ape
I Found You.mp3
........

TXT文件名列表内容:
筷子兄弟 小苹果
蔡依林 Play 我呸
The Wanted-I Found You
..........

TXT和批处理文件全部放音乐文件夹内,运行后修改文件名为:
筷子兄弟 小苹果.mp3
蔡依林 Play 我呸.ape
The Wanted-I Found You.mp3
.........
作者: DAIC    时间: 2014-11-7 09:50

  1. dir /b > test.log
复制代码
看看test.log的歌曲列表和txt文件的顺序是否一致
作者: 老卡机    时间: 2014-11-7 10:50

顺序不一致,是不是需要正则表达式?如果用的话介绍下代码具体作用
文件名:小苹果.mp3 对照列表文件名:筷子兄弟 小苹果中的“小苹果”三个字,
需要自动匹配列表内的名称后修改,可能小苹果.mp3在文件夹排列第100位,Play 我呸.ape在50位,
而中间部分的歌曲没有把歌手信息,并且也没有将歌曲名称写入列表文件。
歌曲是网站下载的,音乐没有歌手名称,而在网站复制的内容介绍中有名称。
作者: GAGATOSHUT    时间: 2014-11-7 13:55

查找字符串后复制至剪贴板,重新命名,需要第三方工具
作者: DAIC    时间: 2014-11-7 14:27

回复 3# 老卡机


这就不好判断了,因为有很多特殊情况,比如:
同一首歌曲,两个不同的歌手都唱过。
两首完全不同的歌曲,但是它们的歌曲名相同。
一首歌曲的名字是另一首歌曲名字的一部分。
......

建议换另一条路试试,右键单击一首歌曲,看看“详细信息”里面有没有你需要的内容。如果有的话,可以用命令行工具提取出来。
作者: 老卡机    时间: 2014-11-7 15:57

呃.....没有,不过都是一个网站下载的歌曲,没和其他人混合,
我想到一个思路,因为列表名称都是一行行的,而且需要处理的都在一个文件夹内,
是否可以用正则表达式,先整理出一个按顺序排列的重命名列表名称出来,
然后再进行命名?怎样做?来个顺序的学习下
作者: apang    时间: 2014-11-7 16:12

  1. @echo off
  2. for /f "delims=" %%a in ('dir /b *.mp3 *.ape') do (
  3.         for /f "delims=" %%b in ('findstr /ic:"%%~na" list.txt') do (
  4.                 ren "%%a" "%%b%%~xa"
  5.         )
  6. )
  7. pause
复制代码

作者: 老卡机    时间: 2014-11-7 16:49

本帖最后由 老卡机 于 2014-11-8 10:02 编辑

问题有点复杂一直没搞定,下面是个移动待命名歌曲的,
@echo off
(for /f "delims=" %%a in (列表.txt) do (
    md 列表
    if "%%~na" neq "列表" move "%%~na.*" 列表\
)) 2>nul
pause

现在需要的是一个批处理,将列表.TXT与重命名列表.TXT对齐,
重命名列表.TXT是网站复制的内容,可能和列表.TXT的顺序不一致,
如何用批处理把两个列表整理成一致的然后重命名?
列表.TXT内容:
小苹果
Play 我呸
I Found You
......
重命名列表.TXT内容:
筷子兄弟 小苹果
蔡依林 Play 我呸
The Wanted-I Found You
......




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