重命名具有索引ID的多个文件

时间:2018-08-07 22:30:01

标签: windows batch-file

我正在尝试创建一个.bat文件,该文件将文件夹中的所有项目重命名为带有index id的自定义名称,

abc.mp4
def.mp4
ghi.mp4
jkl.mp4
mno.mp4
pqr.mp4

{random numbers} + {predefined word} + {index id},如下所示:

14878845file1
48785556file2
22665887file3
47990456file4
...

这是我的代码:

@ECHO OFF
SET "i=1"
SET "temp=file"
FOR %%A IN (*.mp4) DO CALL :SUB "%%A"
    :SUB
    IF %i% GTR 0 REN %1 "%i%%RANDOM%%RANDOM%temp%temp%ep%i%".mp4
    SET/A i+=1

上面的代码可以正常工作,但是在某些情况下仍然无法正常工作,有时会跳转第一个文件,或者使用不同的index id重命名同一文件两次,或者将index id重命名为另一个文件

此代码有什么问题?

1 个答案:

答案 0 :(得分:2)

您的代码有一些问题。

1)如果重命名文件,然后按字母顺序将其进一步向下移动,则FOR命令将再次拾取该文件。您需要更改为FOR / F命令并在IN子句中使用DIR命令。

2)您还需要在GOTO :EOF命令之后输入FOR,否则:SUB代码将执行两次。

我已将所有代码移入FOR命令中,并相应地使用了延迟扩展。在将变量设置为1时,我没有看到检查该变量是否大于零的任何地方。

@echo off
setlocal EnableDelayedExpansion
SET "i=1"
SET "temp=file"
FOR /F "delims=" %%A IN ('dir /a-d /b *.mp4') DO (
    REN "%%A" "!i!!RANDOM!!RANDOM!temp%temp%ep!i!.mp4"
    SET /A i+=1
)