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

mfpqipee  于 12个月前  发布在  Windows
关注(0)|答案(1)|浏览(102)

我有一个包含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%"

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

lymnna71

lymnna711#

你就在不远处试试这个:

@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
)

相关问题