使用 .bat 文件重命名文件夹中的文件

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

我需要一个 .bat 脚本来重命名文件夹中的所有文件,始终遵循数字顺序。 我有这段代码,但我不喜欢结果。如何获得数字排序而不是字典排序?

@echo off
setlocal enabledelayedexpansion

set "pasta=E:\Google Drive\_Projetos em andamento\Ano 2023\Album\Testando"
set "contador=1"

cd /d "%pasta%"

REM Ensure files are sorted numerically and rename them
for /f "tokens=*" %%F in ('dir /b /on *.jpg') do (
    set "novo_nome=00!contador!.jpg"
    ren "%%F" "!novo_nome!"
    set /a "contador+=1"
)

endlocal

原名 (https://i.stack.imgur.com/Ghhsy.png)

名称按数字顺序重命名 (https://i.stack.imgur.com/BRa1M.png) 请注意,这些文件的顺序是错误的: 1,10,11,12,13,114,15,2,3,4,5,6,7,8,9

1,2,3,4,5,6,7,8,9,10,11,12,13,14,15(正确形式)

包含要测试的文件的文件夹 https://wetransfer.com/downloads/4e09d2c0851ed566f37c4cc63916c58720230903163115/9a7d0c

batch-file cmd
1个回答
0
投票

对于每个文件,获取括号中的数字,添加 1000 并取最后三位数字:

@echo off
setlocal EnableDelayedExpansion
for %%A in ("IMG (*).jpg") do (
  for /f "tokens=2 delims=()" %%B in ("%%~nA") do (
    set /a number=1000+%%B
    ECHO ren "%%A" "!number:~-3!%%~xA"
  )
)

如果输出满足您实际启用

ECHO
命令的要求,请删除
ren

© www.soinside.com 2019 - 2024. All rights reserved.