我正在尝试创建一个.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
重命名为另一个文件
此代码有什么问题?
答案 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
)