我有一些名字就像
的文件Image 1.jpg
Image 2.jpg
Image 10.jpg
Image 11.jpg
Image 20.jpg
它们按照我希望它们出现的确切顺序编号,但是当我执行dir
Image 1.jpg
Image 10.jpg
Image 11.jpg
Image 2.jpg
Image 20.jpg
如果这些应该是动画中的帧,那么你的动画基本上会出错。
我想用0填充数字。字符串的格式始终相同
PREFIX NUMBER.EXT
如何填充文件名以便我获取
Image 0001.jpg
Image 0002.jpg
Image 0010.jpg
Image 0011.jpg
Image 0020.jpg
这是我到目前为止所做的事情
echo off
Setlocal EnableDelayedExpansion
rem note the extra space at the end of "Image "
set prefix=Image
for %%F in (*.jpg) do (
set a=%%F
rem // strip the prefix
set a=!a:%prefix%=!
echo !a!
)
这会删除前缀。然后,我会将生成的文件名填入前导字符0,然后重命名该文件。
答案 0 :(得分:2)
您可以像这样隔离数字,而不是执行前缀替换:(删除echo
以启用重命名命令)
@echo off
setlocal ENABLEDELAYEDEXPANSION
for %%A in (*.jpg) do (
for /f "tokens=1-3 delims=. " %%F in ("%%A") do (
set /a a=%%G
set zeros=
if !a! LSS 1000 set zeros=0
if !a! LSS 100 set zeros=00
if !a! LSS 10 set zeros=000
set "name=%%F !zeros!!a!.%%H"
echo ren "%%A" "!name!"
)
)
endlocal
使用set /a
执行数字转换,然后您可以使用扩展比较器LSS
来比较数字并创建相关的填充,最后使用其标记重新组合文件名。这个特定的片段不是通用的 - 它只适用于前缀没有空格或点,并且名称只有三个主要标记。但是你明白了。