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

评分人数

    • impk: 这个是正确答案技术 + 1

TOP

回复 16# smss

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

Powershell :
  1. $a -replace '\s+','' -replace '(.*)-(.*)\.(.*)','$2 - $1.$3'
复制代码

TOP

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

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

Powershell :
xczxczxcz 发表于 2018-12-24 18: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


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



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 于 2019-1-2 21:59 编辑
回复  smss

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

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


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

TOP

回复 22# smss

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

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

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

TOP

回复 10# zgq0301

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

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

本帖最后由 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

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

TOP

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

TOP

返回列表