我需要一个 .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
名称按数字顺序重命名 () 请注意,这些文件的顺序是错误的: 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
对于每个文件,获取括号中的数字,添加 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
。