[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 文件改歌曲名字的批处理

希望得到这样的结果

段品章 - 云深情也深.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
复制代码
不知道问题出在哪里?

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

原档

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

运行结果不正确

何嘉莉 - 夜温柔.mp3    ===>  这个结果不正正确
云深情也深 - 段品章.mp3
今夜雨濛濛 - 罗可珺.mp3

TOP

回复 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

TOP

回复 6# flashercs

你看我的楼上,我已经指出问题了。是你的文件被连续改名了2次。把改名的扩展名改成其它的就ok了。

TOP

回复 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次。这里不知道有啥更好的办法?

TOP

回复 9# flashercs


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

TOP

返回列表