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

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

[复制链接]
发表于 2018-12-24 16:47:28 | 显示全部楼层
1、2、

[ 本帖最后由 tireless 于 2008-12-18 08:05 编辑 ]
tireless 发表于 2008-12-17 22:53


我试了下上边的所有脚本会导致文件名-左右删字符
如:AAA-BBB  会生成 BB-AA
然而我们需要的是生成BBB-AAA

以下提供可用脚本
  1. @echo off&setlocal EnableDelayedExpansion  
  2. for /f "tokens=1,2 delims=-." %%a in ('dir /b *.mp3') do (
  3. set var=%%a
  4. ::去除var变量左边第一个空格
  5. if "!var:~0,1!"==" " set var=!var:~1!
  6. if "!var:~0,1!"==" " set var=!var:~1!
  7. if "!var:~0,1!"==" " set var=!var:~1!
  8. if "!var:~0,1!"==" " set var=!var:~1!
  9. if "!var:~0,1!"==" " set var=!var:~1!
  10. if "!var:~0,1!"==" " set var=!var:~1!
  11. if "!var:~0,1!"==" " set var=!var:~1!
  12. if "!var:~0,1!"==" " set var=!var:~1!
  13. ::去除var变量右边第一个空格
  14. if "!var:~-1!"==" " set var=!var:~0,-1!
  15. if "!var:~-1!"==" " set var=!var:~0,-1!
  16. if "!var:~-1!"==" " set var=!var:~0,-1!
  17. if "!var:~-1!"==" " set var=!var:~0,-1!
  18. if "!var:~-1!"==" " set var=!var:~0,-1!
  19. if "!var:~-1!"==" " set var=!var:~0,-1!
  20. if "!var:~-1!"==" " set var=!var:~0,-1!
  21. if "!var:~-1!"==" " set var=!var:~0,-1!
  22. set jar=%%b
  23. ::去除jar变量左边第一个空格
  24. if "!jar:~0,1!"==" " set jar=!jar:~1!
  25. if "!jar:~0,1!"==" " set jar=!jar:~1!
  26. if "!jar:~0,1!"==" " set jar=!jar:~1!
  27. if "!jar:~0,1!"==" " set jar=!jar:~1!
  28. if "!jar:~0,1!"==" " set jar=!jar:~1!
  29. if "!jar:~0,1!"==" " set jar=!jar:~1!
  30. if "!jar:~0,1!"==" " set jar=!jar:~1!
  31. if "!jar:~0,1!"==" " set jar=!jar:~1!
  32. ::去除jar变量右边第一个空格
  33. if "!jar:~-1!"==" " set jar=!jar:~0,-1!
  34. if "!jar:~-1!"==" " set jar=!jar:~0,-1!
  35. if "!jar:~-1!"==" " set jar=!jar:~0,-1!
  36. if "!jar:~-1!"==" " set jar=!jar:~0,-1!
  37. if "!jar:~-1!"==" " set jar=!jar:~0,-1!
  38. if "!jar:~-1!"==" " set jar=!jar:~0,-1!
  39. if "!jar:~-1!"==" " set jar=!jar:~0,-1!
  40. if "!jar:~-1!"==" " set jar=!jar:~0,-1!
  41. ::重命名文件
  42. ren "%%a-%%b.mp3" "!jar!-!var!.mp3"
  43. )
复制代码

评分

参与人数 1技术 +1 收起 理由
impk + 1 这个是正确答案

查看全部评分

发表于 2018-12-24 18:09:47 | 显示全部楼层
回复 16# smss

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

Powershell :

  1. $a -replace '\s+','' -replace '(.*)-(.*)\.(.*)','$2 - $1.$3'
复制代码
发表于 2018-12-30 16:26:23 | 显示全部楼层
本帖最后由 smss 于 2018-12-30 16:28 编辑
回复  smss

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

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


测试无效
发表于 2018-12-30 17:09:42 | 显示全部楼层
回复 18# smss


    操作系统什么版本?PowerShell什么版本?把你的测试用例和测试结果发出来看看吧
发表于 2019-1-1 18:52:48 | 显示全部楼层
回复  smss


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



发表于 2019-1-1 20:09:26 | 显示全部楼层
回复 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技术 +1 收起 理由
ivor + 1 powershell 比较方便

查看全部评分

发表于 2019-1-2 21:44:30 | 显示全部楼层
本帖最后由 smss 于 2019-1-2 21:59 编辑
回复  smss

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

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


无论在BAT中还是PowerShell中都无效
发表于 2019-1-5 11:32:55 | 显示全部楼层
回复 22# smss

老大,你先确定好工作目录行不行?CD /D ?
发表于 2019-6-10 11:45:46 | 显示全部楼层
本帖最后由 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!"
复制代码
为什么我替换时数字没问题汉字就出错了
发表于 2019-7-21 11:11:11 | 显示全部楼层
刚开始学,真的看不懂,还得努力才行
发表于 2019-7-22 00:38:23 | 显示全部楼层
回复 10# zgq0301

代码有问题,更名后,文件名带空格。
发表于 2019-8-23 12:31:23 | 显示全部楼层
本帖最后由 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楼是正确答案
发表于 2019-8-23 13:14:05 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2021-3-29 22:39:11 | 显示全部楼层
为什么都只改4个文件就停了
发表于 2023-3-23 20:21:49 | 显示全部楼层
回复 8# leaparde
大佬是直接复制编辑bat文件就可以用吗咋用没研究明白😊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 22:03 , Processed in 0.021883 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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