Board logo

标题: [文件操作] 文件改歌曲名字的批处理 [打印本页]

作者: netdzb    时间: 2019-7-22 07:26     标题: 文件改歌曲名字的批处理

希望得到这样的结果

段品章 - 云深情也深.mp3     --->     云深情也深 - 段品章.mp3
成方圆 - 该怎样就怎样       --->     该怎样就怎样 - 成方圆
罗可珺 - 今夜雨濛濛.mp3     --->     今夜雨濛濛 - 罗可珺.mp3

---------------------------------------------------

我参考论坛的代码写了一个,程序运行后,文件名存在多余的空格。
代码贴出来,也算是复习吧。
  1. @echo on & setlocal EnableDelayedExpansion
  2. for %%i in (*.mp3) do (
  3.     for /f "delims=- tokens=1,2" %%a in ("%%~ni") do (
  4.         ren "%%i" "%%b - %%a"%%~xi
  5.      )
  6.    )
  7. pause
复制代码
不知道问题出在哪里?
作者: flashercs    时间: 2019-7-22 08:41

  1. @echo on & setlocal EnableDelayedExpansion
  2. for %%i in (*.mp3) do (
  3.     for /f "tokens=1,* delims=- " %%a in ("%%~ni") do (
  4.         ren "%%i" "%%b - %%a"%%~xi
  5.      )
  6.    )
  7. pause
复制代码

作者: Batcher    时间: 2019-7-22 09:11

自己养成好习惯 tokens 在前 delims 在后
作者: netdzb    时间: 2019-7-22 09:36

回复 2# flashercs
代码有问题,运行结果不正确。

原档

段品章 -云深情也深.mp3
何嘉莉 - 夜温柔.mp3
罗可珺 - 今夜雨濛濛

运行结果不正确

何嘉莉 - 夜温柔.mp3    ===>  这个结果不正正确
云深情也深 - 段品章.mp3
今夜雨濛濛 - 罗可珺.mp3
作者: netdzb    时间: 2019-7-22 09:42

回复 2# flashercs

你的代码存在的问题是,有的mp3被修改了2次。

我这样改可以通过,然后把.kuwo改回mp3。你看你还有更好的方法吗?

@echo on & setlocal EnableDelayedExpansion
for %%i in (*.mp3) do (
    for /f "tokens=1,* delims=- " %%a in ("%%~ni") do (
rem        ren "%%i" "%%b - %%a"%%~xi
    ren "%%i" "%%b - %%a".kuwo
    )
)
pause
作者: flashercs    时间: 2019-7-22 09:46

回复 4# netdzb


    就这一个不正确,说明是文件名不合标准
作者: netdzb    时间: 2019-7-22 09:48

回复 6# flashercs

你看我的楼上,我已经指出问题了。是你的文件被连续改名了2次。把改名的扩展名改成其它的就ok了。
作者: netdzb    时间: 2019-7-22 10:04

回复 6# flashercs

@echo off & setlocal EnableDelayedExpansion
for %%i in (*.mp3) do (
    for /f "tokens=1,* delims=- " %%a in ("%%~ni") do (
    echo hello
    ren "%%i" "%%b - %%a".mp3
    )
)
pause

你放3个mp3到某个文件里去测试吧,echo hello执行了4次。这里不知道有啥更好的办法?
作者: flashercs    时间: 2019-7-22 10:18

回复 8# netdzb


    echo hello改成echo %%i 看看
作者: netdzb    时间: 2019-7-22 10:36

回复 9# flashercs


    echo %%i 应该是多了改过名字的文件名,比如 何嘉莉 - 夜温柔.mp3 是第一个改名的文件
改名成 夜温柔 - 何嘉莉.mp3,程序最后一次执行又把 夜温柔 - 何嘉莉.mp3 改回 何嘉莉 - 夜温柔.mp3
也许你现在没电脑,等有电脑的时候你去测试一次吧,你的代码存在一个瑕疵。
作者: flashercs    时间: 2019-7-22 11:35

回复 10# netdzb


    测试了,没有你说的问题。。。
你试试这个
  1. @echo off
  2. for /f "delims=" %%i in ('where .:*.mp3') do (
  3.     for /f "tokens=1,* delims=- " %%a in ("%%~ni") do (
  4.     echo "%%a - %%b"
  5.     ren "%%i" "%%b - %%a".mp3
  6.     )
  7. )
  8. pause
复制代码





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