Board logo

标题: [文件操作] 批处理实现文件名的改名练习 这个好像出有人出过出题挑战的 [打印本页]

作者: netdzb    时间: 2021-2-9 12:30     标题: 批处理实现文件名的改名练习 这个好像出有人出过出题挑战的

希望得到这样的结果

段品章 - 云深情也深.mp3     --->     云深情也深 - 段品章.mp3
成方圆 - 该怎样就怎样       --->     该怎样就怎样 - 成方圆
罗可珺 - 今夜雨濛濛.mp3     --->     今夜雨濛濛 - 罗可珺.mp3

谁在贴一下,也算是复习一下了。
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. for /f "delims=" %%i in ('dir /b/on "*.ape"') do (
  4.     for /f "delims=- tokens=1,2" %%a in ("%%~ni") do (
  5. REM           echo "%%i"
  6. set aa=%%a:~0,1%
  7. set bb=%%b:~0,1%
  8.    echo "%%aa"
  9.    echo "%%bb"
  10.      )
  11.    )
  12. pause
复制代码
我调试运行的结果是 a参数是, 段品章(1空格), b参数是 (1空格)云深情也深,
今天自己尝试写代码,这里截断的地方不会写了,谁能帮忙贴一下,谢谢!
作者: netdzb    时间: 2021-2-9 13:30

回复 1# netdzb


自己给解决了,正确的代码应该是这样的。

@echo on
setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir /b/on "*.ape"') do (
    for /f "delims=- tokens=1,2" %%a in ("%%~ni") do (
        set str1=%%b
        set str2=%%a
        ren "%%i" ""!str1:~1!" - "!str2:~,-1!""%%~xi
     )
   )
pause
作者: qixiaobin0715    时间: 2021-2-9 14:54

mp3咋成了ape了:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1* delims=-" %%a in ('dir /b /a-d *.mp3') do (
  4. set str1=%%a
  5. set str2=%%~nb
  6. ren "%%a-%%b" "!str2:~1! - !str1:~0,-1!.mp3"
  7. )
  8. pause
复制代码

作者: netdzb    时间: 2021-2-9 15:59

回复 3# qixiaobin0715

同一个意思,我在ape文件夹做测试。
作者: smss    时间: 2021-2-10 10:25

  1. @echo off&SetLocal EnableDelayedExpansion
  2. for /f "delims=" %%i in ('dir /b/s/a-d ^|find "-"') do for /f "tokens=1,* delims=-" %%a in ("%%~ni") do set "L=%%a"&set "R=%%b"&set L=!L: =!&set R=!R: =!&if not "%%i"==%0 ren "%%i" "!R!-!L!%%~xi"&Echo 重命名"%%i"为"!R!-!L!%%~xi"
  3. pause
复制代码

作者: 朱科技    时间: 2021-2-10 11:11

感觉这像我妈妈的广场舞,考到U盘在整理下歌曲顺序,方便我妈妈跳广场舞




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2