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

[ 新手习题 9 ] 批处理交换歌曲与歌手

可以是中文歌曲,也可以是英文歌曲。如果你想统一歌曲文件名,歌手都放前面或是都放后面。可能要进行如下操作,可是如果手工来改的话,要前面复制一下后面再复制一下,会很麻烦。
问题来了,拖一个文件到批处理图标上,自动对调歌手与歌曲名。

其中歌名可以由汉字、英语、数字组成,英文歌曲会有空格,但不含特殊符号;
歌手也可以是组合、艺名,也不含特殊符号;
中间用 “ - ” 连接,即(空格)-(空格)。
  1. 老狼 - 同桌的你.mp3     ——>  同桌的你 - 老狼.mp3
  2. Mirror Mirror - M2M.mp3  ——>  M2M - Mirror Mirror.mp3
复制代码


目的:学习参数的使用,可能用到 for,或是变量替换。

要求:歌曲与歌手对调,本题基本要求是能处理一个文件,当然你想多个一起交换也不反对;不考虑特殊字符。方法不限。

评分:代码可读性 1 分;
   首个新方法 6 分,第二个 5 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 3 分,已经出现过的方法追加 1 分。
=========================================
谢谢随风兄提醒,已添加说明。

[ 本帖最后由 wxcute 于 2008-12-17 19:32 编辑 ]

回复 16# smss
大佬只支持 mp3吗,别的音频格式再怎么加

TOP

回复 8# leaparde
大佬是直接复制编辑bat文件就可以用吗咋用没研究明白😊

TOP

为什么都只改4个文件就停了

TOP

本帖最后由 impk 于 2019-8-23 13:18 编辑
  1. @echo off
  2. setlocal EnableDelayedExpansion  
  3. for /f "tokens=1,2 delims=-." %%a in ( 'dir /b *.mp3' ) do (
  4. set vara=%%a
  5. if "!vara:~0,1!"==" " set vara=!vara:~1!
  6. if "!vara:~-1!"==" " set vara=!vara:~0,-1!
  7. set varb=%%b
  8. if "!varb:~0,1!"==" " set varb=!varb:~1!
  9. if "!varb:~-1!"==" " set varb=!varb:~0,-1!
  10. ren "%%a-%%b.mp3" "!varb! - !vara!.mp3"
  11. )
  12. pause
复制代码

TOP

本帖最后由 impk 于 2019-8-23 13:05 编辑
  1. @echo off
  2. for %%a in ( *.mp3 ) do (
  3. for /f "tokens=1,2 delims=-. " %%i in ( "%%a" ) do ( ren "%%a" "%%j - %%i.mp3" )
  4. )
  5. pause
复制代码
这样写不对,如【Mirror Mirror - M2M.mp3】这种歌名里有空格的,这批处理就无效
16楼是正确答案

TOP

回复 10# zgq0301

代码有问题,更名后,文件名带空格。

TOP

刚开始学,真的看不懂,还得努力才行

TOP

本帖最后由 miqilaosu 于 2019-6-10 16:39 编辑
  1. echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2 delims=-" %%i in ('dir /a-d /b "*-*.*"') do (
  4. ren "%%i-%%~nxj" "!str2! - !str1!%%~xj"
  5. )
  6. pause
复制代码
新人交作业


……………………………………………………………………………………………………………………
  1. if "!str1:~0,-1!"==" " call  set /a "str1=!str1:~0,-1!"
复制代码
为什么我替换时数字没问题汉字就出错了

TOP

回复 22# smss

老大,你先确定好工作目录行不行?CD /D ?

TOP

本帖最后由 smss 于 2019-1-2 21:59 编辑
回复  smss

首先这句脚本写的是改名的正则表达式,没有文件浏览。它当然不能产生任何作用。

看图片, ...
xczxczxcz 发表于 2019-1-1 20:09


无论在BAT中还是PowerShell中都无效

TOP

回复 20# smss

首先这句脚本写的是改名的正则表达式,没有文件浏览。它当然不能产生任何作用。

看图片,你的系统好像是 win10。WIN7以上自带PWOERSHELL。无需复制PS程序。可以在PS窗口或用PS脚本直接运行。

如修改你的 图片所示的RAR文件。
  1. dir *.rar | ren -newname {$_.name -replace '\s+','' -replace '(.*)-(.*)\.(.*)','$2-$1.$3'} -verb
  2. cmd /c "echo;&pause"
复制代码
元旦太冷。
1

评分人数

    • ivor: powershell 比较方便技术 + 1

TOP

回复  smss


    操作系统什么版本?PowerShell什么版本?把你的测试用例和测试结果发出来看看吧
Batcher 发表于 2018-12-30 17:09



TOP

回复 18# smss


    操作系统什么版本?PowerShell什么版本?把你的测试用例和测试结果发出来看看吧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 smss 于 2018-12-30 16:28 编辑
回复  smss

微软给我们的 WINDOWS 提供了更好的工具不用,还要这么绕脑。

Powershell :
xczxczxcz 发表于 2018-12-24 18:09


测试无效

TOP

返回列表