回到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
答案 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"