批量用0填充文件名
Padding filenames with 0s in batch
我正在尝试从命令行编辑一些带有填充 0 的文件名。比如我想让T9变成T009
我试过:
@echo off
set num=99
set newnum=000%num%
set newnum=%newnum:~-4%
rename "T%num%.bmp" "T%newnum%.bmp"
pause
确实如我所料将文件 t99.bmp 更改为 T0099.bmp。但是,当我尝试这样的循环时:
@echo off
FOR /L %%G IN (1,1,100) DO (
set num=%%G
echo %%G
set newnum=0000%num%
set newnum=%newnum:~-4%
echo %newnum%
ren "T%num%.bmp" "T%newnum%.bmp"
)
pause
它告诉我 'ECHO is off' 和 'The system cannot find the file specified.' 请注意,它确实回显 %%G 所以我不知道发生了什么。我认为这与在循环内有关?但是我无法通过谷歌搜索来解决这个问题。
我的总体问题是:我的方法是否存在明显错误?以及为什么第一段代码的行为符合我的预期,而第二段却不是?
我一个小时前刚学过批处理,到目前为止,这让我很头疼。哈哈
设置EnableDelayedExpansion
然后用!var!
而不是%var%
引用变量
固定码:
@echo off
setlocal EnableDelayedExpansion
FOR /L %%G IN (1,1,100) DO (
set num=%%G
echo !num!
set newnum=0000!num!
set newnum=!newnum:~-4!
echo !newnum!
ren "T%%G.bmp" "T!newnum!.bmp"
)
pause
endlocal
ECHO IS OFF
如果您尝试回显的变量为空,则会出现。
对于未找到文件部分,这仅表示未找到您尝试处理的文件。确保 .bat
文件与 .bmp
图像位于同一文件夹中。如果没有,请将其移到那里或 cd 前往路径。
要阅读有关 EnableDelayedExpansion 的更多信息,click here
另外,只是想让你知道,没有必要像你那样设置 num
变量,set newnum=0000%%G
就可以了。
我正在尝试从命令行编辑一些带有填充 0 的文件名。比如我想让T9变成T009
我试过:
@echo off
set num=99
set newnum=000%num%
set newnum=%newnum:~-4%
rename "T%num%.bmp" "T%newnum%.bmp"
pause
确实如我所料将文件 t99.bmp 更改为 T0099.bmp。但是,当我尝试这样的循环时:
@echo off
FOR /L %%G IN (1,1,100) DO (
set num=%%G
echo %%G
set newnum=0000%num%
set newnum=%newnum:~-4%
echo %newnum%
ren "T%num%.bmp" "T%newnum%.bmp"
)
pause
它告诉我 'ECHO is off' 和 'The system cannot find the file specified.' 请注意,它确实回显 %%G 所以我不知道发生了什么。我认为这与在循环内有关?但是我无法通过谷歌搜索来解决这个问题。
我的总体问题是:我的方法是否存在明显错误?以及为什么第一段代码的行为符合我的预期,而第二段却不是?
我一个小时前刚学过批处理,到目前为止,这让我很头疼。哈哈
设置EnableDelayedExpansion
然后用!var!
而不是%var%
固定码:
@echo off
setlocal EnableDelayedExpansion
FOR /L %%G IN (1,1,100) DO (
set num=%%G
echo !num!
set newnum=0000!num!
set newnum=!newnum:~-4!
echo !newnum!
ren "T%%G.bmp" "T!newnum!.bmp"
)
pause
endlocal
ECHO IS OFF
如果您尝试回显的变量为空,则会出现。
对于未找到文件部分,这仅表示未找到您尝试处理的文件。确保 .bat
文件与 .bmp
图像位于同一文件夹中。如果没有,请将其移到那里或 cd 前往路径。
要阅读有关 EnableDelayedExpansion 的更多信息,click here
另外,只是想让你知道,没有必要像你那样设置 num
变量,set newnum=0000%%G
就可以了。