我想在批处理文件中编写一个
FOR
循环来创建一些变量。
我正在一个有 60 个选项的菜单中设置变量。变量
item1
到 item60
包含菜单项,其中一些为空。变量 %pad%
包含 40 个空格。因此,以下代码可确保每个菜单项 dis1
到 dis60
的长度为 40 个字符。
set dis1=%item1%%pad%
set dis1=%dis1:~0,40%
所以问题是我需要重复这段代码 60 次,如下:
set dis1=%item1%%pad%
set dis1=%dis1:~0,40%
到...
set dis60=%item60%%pad%
set dis60=%dis60:~0,40%
请告诉我一个
FOR
循环来完成这项任务。我不知道如何增加 1-60 值,因为它在变量内部。
@ECHO OFF
SETLOCAL enabledelayedexpansion
FOR /L %%e IN (1,1,12) DO SET "dis%%e=item %%e"
SET "pad= wxyz"
FOR /L %%e IN (1,1,12) DO (
SET "dis%%e=!dis%%e!%pad%"
SET "dis%%e=!dis%%e:~0,20!"
)
FOR /L %%e IN (1,1,12) DO ECHO !dis%%e!
ENDLOCAL
SETLOCAL
FOR /L %%e IN (1,1,12) DO SET "dis%%e=item %%e"
SET "pad= wxyz"
FOR /L %%e IN (1,1,12) DO CALL :padme dis%%e
FOR /L %%e IN (1,1,12) DO CALL ECHO %%dis%%e%%
GOTO :EOF
:padme
CALL SET "%1=%%%1%%%pad%"
CALL SET "%1=%%%1:~0,20%%"
GOTO :eof
这里有两种方法,一种使用
delayedexpansion
,另一种禁用延迟扩展(默认条件)Stephan 的 DELAYEDEXPANSION 链接
我在
pad
变量的末尾添加了一些字符,以显示添加的字符已被正确截断。显然,应该更改该数字以适合您的情况。我使用的演示是为了可管理的输出。