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

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

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

TOP

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

回复 3# tireless


    高,学习了。字符截取原来有如此妙用!

TOP

  1. @echo off
  2. for %%a in (%*) do (
  3. for /f "tokens=1,2,3 delims=-. " %%i in ("%%~nxa") do (
  4. ren "%%~nxa" "%%j - %%i.%%k"
  5. )
  6. )
复制代码

TOP

@echo off
setlocal EnableDelayedExpansion
for %%i in (%*) do (
set vv=%%~nxi
for /f "tokens=1-3* delims=-." %%i in ('type "!vv%%i!"') do echo;%%j - %%i.%%k
  )
pause

拖放功能
爱情不是一颗心去敲另一颗心、而是两颗心擦出火花。

TOP

@echo off
for /f "tokens=1-3* delims=-." %%i in (1.txt) do (
echo;%%j - %%i.%%k
)
pause

偷懒的方法
爱情不是一颗心去敲另一颗心、而是两颗心擦出火花。

TOP

本帖最后由 battab 于 2014-2-18 22:20 编辑

回复 1# wxcute
  1. @echo off
  2. set name=%~nx1
  3. for /f "tokens=1,2,3 delims=-." %%a in ("%name%") do set new_name=%%b - %%a.%%c
  4. move /y %1 "C:\Documents and Settings\Administrator\桌面\%new_name%"
复制代码
注意:最后重命名成新名字的路径要给出到目标地址上,否则默认存在...\Administrator\下!
学习中

TOP

  1. @echo off
  2. for %%i in (*.mp3) do (
  3.      for /f "delims=-. tokens=1,2" %%a  in ("%%i") do (
  4.           ren %%i  %%b-%%a.mp3
  5.           )
  6.   )
  7.   pause>nul
复制代码

[ 本帖最后由 zgq0301 于 2009-11-13 13:17 编辑 ]

TOP

学习学习了

TOP

  1. @echo off
  2. title Replace the filename
  3. color 1f
  4. mode con:cols=80 lines=30
  5. setlocal enabledelayedexpansion
  6. ::列出当前目录下所有文件及文件夹
  7. dir /b>tmp
  8. ::findstr用来找出所有的mp3
  9. for /f "tokens=*" %%a in ('findstr ".mp3" "tmp"') do (
  10.    set str=%%a
  11. ::把文件名中的“空格-空格”替换成“-”
  12.    set str=!str: - =-!
  13. ::歌曲名称和歌手互换
  14.    for /f "tokens=1-3 delims=-." %%i in ("!str!") do (
  15.       set name=%%i
  16.       set music=%%j
  17.       echo %%a  change to !music! - !name!.mp3
  18.       rename "%%a" "!music! - !name!.mp3"
  19.       )
  20. )
  21. echo.
  22. echo 以上文件改名成功!
  23. del /f /q tmp
  24. pause>nul
复制代码
空格不太会处理,代码感觉有点繁了,期待高手指点指点啊!

[ 本帖最后由 leaparde 于 2008-12-26 16:33 编辑 ]
1

评分人数

    • wxcute: 不错,鼓励一下。PB + 7

TOP

@title 更名
@echo off
color 1f
setlocal EnableDelayedExpansion
:kaishi
set /p dir=请输入路径格式: X:\..\.. 例如 c:\music)
if exist %dir%\*.mp3 (for %%i in (%dir%\*.mp3) do (echo %%i >>tmp.txt)) else (echo 路径错误或*.mp3不存在&goto kaishi)
for /f "delims=\-. tokens=1,2,3,4,5,6,7,8,9" %%a in (tmp.txt) do echo %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p %%q %%r %%s %%t %%u %%v %%w %%x %%y %%z >>1.txt
for /f "delims=%%" %%a in (1.txt) do (echo %%a >>2.txt)
for /f "delims=," %%a in (2.txt) do (
set /a s=0
for %%i in (%%a) do set /a s=!s!+1
set /a s1=!s!-2
set /a s2=!s!-1

)
for /f "tokens=%s1%,%s2%" %%a in (2.txt) do (ren "%dir%\%%a - %%b.mp3" "%%b - %%a.mp3" 2>nul
ren "%dir%\%%a-%%b.mp3" "%%b-%%a.mp3" 2>nul
)
del 1.txt
del 2.txt
del tmp.txt
set /p a=文件名已经更改完毕<nul
pause
start %dir%
exit
1

评分人数

TOP

@title 更名
@echo off
color 1f
setlocal EnableDelayedExpansion
:kaishi
set /p dir=请输入路径:
if exist %dir%\*.mp3 (for %%i in (%dir%\*.mp3) do (echo %%i >>tmp.txt)) else (echo 路径错误或*.mp3不存在&goto kaishi)
for /f "delims=\-. tokens=1,2,3,4,5,6,7,8,9" %%a in (tmp.txt) do echo %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p %%q %%r %%s %%t %%u %%v %%w %%x %%y %%z >>1.txt
for /f "delims=%%" %%a in (1.txt) do (echo %%a >>2.txt)
for /f "delims=," %%a in (2.txt) do (
set /a s=0
for %%i in (%%a) do set /a s=!s!+1
set /a s1=!s!-2
set /a s2=!s!-1
)
for /f "tokens=%s1%,%s2%" %%a in (2.txt) do (ren "%dir%\%%a - %%b.mp3" "%%b - %%a.mp3" 2>nul
ren "%dir%\%%a-%%b.mp3" "%%b-%%a.mp3" 2>nul
)
del 1.txt
del 2.txt
del tmp.txt
set /p a=文件名已经更改完毕<nul
pause
start %dir%
exit
1

评分人数

TOP

答案

@title 更名
@echo off
color 1f
setlocal EnableDelayedExpansion
:kaishi
set /p dir=请输入路径:
if exist %dir%\*.mp3 (for %%i in (%dir%\*.mp3) do (echo %%i >>tmp.txt)) else (echo 路径错误或*.mp3不存在&goto kaishi)
for /f "delims=\-. tokens=1,2,3,4,5,6,7,8,9" %%a in (tmp.txt) do echo %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p %%q %%r %%s %%t %%u %%v %%w %%x %%y %%z >>1.txt
for /f "delims=%%" %%a in (1.txt) do (echo %%a >>2.txt)
for /f "delims=," %%a in (2.txt) do (
set /a s=0
for %%i in (%%a) do set /a s=!s!+1
set /a s1=!s!-2
set /a s2=!s!-1
)
for /f "tokens=%s1%,%s2%" %%a in (2.txt) do (ren "%dir%\%%a - %%b.mp3" "%%b - %%a.mp3" 2>nul
ren "%dir%\%%a-%%b.mp3" "%%b-%%a.mp3" 2>nul
)
del 1.txt
del 2.txt
del tmp.txt
set /p a=文件名已经更改完毕<nul
pause
start %dir%
exit
1

评分人数

    • wxcute: 代码问题众多,且达不到预想效果。PB + 2

TOP

好的    看完   OK    批处理下吧
1

评分人数

    • wxcute: 居然到这里来灌水?PB -5

TOP

1、
  1. @echo off & setlocal EnableDelayedExpansion
  2. for %%A in (%*) do (
  3.   for /f "tokens=1,* delims=-" %%a in ("%%~nA") do (
  4.     set "L=%%a" & set "R=%%b"
  5.     ren %%A "!R:~1! - !L:~,-1!.mp3"
  6.   )
  7. )
复制代码
2、
  1. @echo off & setlocal EnableDelayedExpansion
  2. for %%A in (%*) do (
  3.   set str=%%~nA
  4.   for /f "delims=\ tokens=1,2" %%a in ("!str: - =\!") do (
  5.     ren %%A "%%b - %%a.mp3"
  6.   )
  7. )
复制代码

[ 本帖最后由 tireless 于 2008-12-18 08:05 编辑 ]
1

评分人数

    • wxcute: 两种方法被你用了。希望有人能想出新招来PB + 10

TOP

返回列表