Win 批处理文件:使用格式化的递增名称重命名目录中的所有文件

问题描述 投票:0回答:1

我有一个包含 png 文件的目录,我需要将其从最旧到最新排序,然后使用包含始终为 4 位的递增数字后缀的名称进行重命名,例如第一个文件为“file_0001.png”,第千个文件为“file_1000.png”。

使用我通过在线搜索找到的代码(包括我在这里找到的一些代码),我首先编写了一个包含以下内容的批处理文件:

setlocal enabledelayedexpansion
set "count=1"
for /f "delims=*" %%f in ('dir /b /o:d /tc *.png') do (
ren %%f file_!count!.png
set /a count+=1
)

这可行,但文件名的数字部分未按我需要的格式格式化。 因此,我尝试通过添加另一个从递增计数变量派生的变量来适应上述内容,然后在重命名文件时仅包含我需要的 4 位数字:

setlocal enabledelayedexpansion
set count=1
for /f "delims=*" %%f in ('dir /b /o:d /tc *.png') do (
set "fcount=000000!%count%"
ren %%f file_!fcount:~-4!.png
set /a count+=1
)

当我运行此命令时,它会正确重命名第一个文件,但随后出现错误,提示存在重复的文件名或找不到该文件,所以我认为第 4 行一定存在问题导致它不正确增加:

set "fcount=000000!%count%"

谁能告诉我我做错了什么?

windows batch-file cmd
1个回答
0
投票

你就在不远处;试试这个:

@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
Set "count=10000"
For /F "EOL=? Delims=" %%G In ('Dir *.png /A:-D /B /O:D /T:C 2^>NUL') Do (
    Set /A count += 1
    Ren "%%G" file_!count:~-4!%%~xG
)
© www.soinside.com 2019 - 2024. All rights reserved.