找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31644|回复: 10

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

[复制链接]
发表于 2019-7-22 07:26:38 | 显示全部楼层 |阅读模式
希望得到这样的结果

段品章 - 云深情也深.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
复制代码
不知道问题出在哪里?
发表于 2019-7-22 08:41:39 | 显示全部楼层
  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
复制代码
发表于 2019-7-22 09:11:43 | 显示全部楼层
自己养成好习惯 tokens 在前 delims 在后
 楼主| 发表于 2019-7-22 09:36:11 | 显示全部楼层
回复 2# flashercs
代码有问题,运行结果不正确。

原档

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

运行结果不正确

何嘉莉 - 夜温柔.mp3    ===>  这个结果不正正确
云深情也深 - 段品章.mp3
今夜雨濛濛 - 罗可珺.mp3
 楼主| 发表于 2019-7-22 09:42:49 | 显示全部楼层
回复 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
发表于 2019-7-22 09:46:10 | 显示全部楼层
回复 4# netdzb


    就这一个不正确,说明是文件名不合标准
 楼主| 发表于 2019-7-22 09:48:01 | 显示全部楼层
回复 6# flashercs

你看我的楼上,我已经指出问题了。是你的文件被连续改名了2次。把改名的扩展名改成其它的就ok了。
 楼主| 发表于 2019-7-22 10:04:57 | 显示全部楼层
回复 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次。这里不知道有啥更好的办法?
发表于 2019-7-22 10:18:10 | 显示全部楼层
回复 8# netdzb


    echo hello改成echo %%i 看看
 楼主| 发表于 2019-7-22 10:36:02 | 显示全部楼层
回复 9# flashercs


    echo %%i 应该是多了改过名字的文件名,比如 何嘉莉 - 夜温柔.mp3 是第一个改名的文件
改名成 夜温柔 - 何嘉莉.mp3,程序最后一次执行又把 夜温柔 - 何嘉莉.mp3 改回 何嘉莉 - 夜温柔.mp3
也许你现在没电脑,等有电脑的时候你去测试一次吧,你的代码存在一个瑕疵。
发表于 2019-7-22 11:35:31 | 显示全部楼层
回复 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 06:17 , Processed in 0.021031 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表