Windows批量重命名文件与填充数字文件?

时间:2014-05-13 17:11:32

标签: windows batch-file batch-rename

回到DOS 5(LOL)我以为我理解批处理文件,但我不知所措。

我有一系列文件:

disc51.mp3
disc52.mp3
disc53.mp3
disc54.mp3
disc55.mp3
disc56.mp3
disc57.mp3
disc58.mp3
disc59.mp3
disc510.mp3
disc511.mp3

...等

我需要将它们重命名:

disc501.mp3
disc502.mp3
disc503.mp3
disc504.mp3
disc505.mp3
disc506.mp3
disc507.mp3
disc508.mp3
disc509.mp3
disc510.mp3
disc511.mp3

所以我只需要重命名序列中的前9个文件,并通过在char 5和6之间添加'0'来实现。我该怎么做?

这是我的第一次尝试,假设每个文件都以'disc5'开头。但是,我想要更通用的东西,即。无论初始命名约定如何,它都能正常工作。我唯一想假设的是,在“名称”之后,数字将是1,2,3,4,5,6,7,8,9,10,11,12等。

echo off
cls
setlocal enabledelayedexpansion
FOR %%G IN (*.MP3) DO ( call :strlen %%G)
exit /b
)
:strlen
  set myvar=%~n1
  rem now compute the length of the string
  set #=!myvar!
  set length=0
  :loop
  if defined # (
    rem shorten string by one character
    set #=!#:~1!
    rem increment the string count variable %length%
    set /A length += 1
    rem repeat until string is null
    goto loop
  )
  rem assuming file name starts with disc. I'd like to make this a more general case
  if %length%==6 ren %1 !myvar:~0,5!0!myvar:~5,1!.mp3
  exit /b

1 个答案:

答案 0 :(得分:2)

@echo off
for /L %%i in (1,1,9) do ren "%1%%i.mp3" "%10%%i.mp3"

以前的批处理文件需要第一个参数中的初始名称,例如:

test.bat disc5

您也可以直接在命令行中使用以前的方法:

for /L %i in (1,1,9) do ren "disc5%i.mp3" "disc50%i.mp3"