Windows批处理文件'for'循环解决方案

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

我想在批处理文件中编写一个

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 值,因为它在变量内部。

for-loop batch-file
1个回答
0
投票
@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
变量的末尾添加了一些字符,以显示添加的字符已被正确截断。显然,应该更改该数字以适合您的情况。我使用的演示是为了可管理的输出。

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