我一直在研究一个批处理文件,该文件创建如下变量网格:
%G1%%G2%%G3%%G4%%G5%
%G6%%G7%%G8%%G9%%G10%
%G11%%G12%%G13%%G14%%G15%
但是当我尝试运行我的批处理文件时,它只会写:
%G1%%G2%%G3%%G4%%G5%
Echo is off.
Echo is off.
Echo is off.
Echo is off.
我已经在此处添加了代码,有人可以告诉我我做错了什么吗?
@echo off
title GirdMaker
setlocal enabledelayedexpansion
set lineid=0
set COLS=0
set LINES=0
set /p LINES=Enter number of lines:
set /p COLS=Enter the number of colums:
cls
set START=1
set linecount=0
:A
set LINE=
for /l %%I in (%START%,1,%COLS%) do (
set LINE=!LINE!%%G%%I%%
)
set /a linecount=%linecount%+1
echo %LINE%
set /a lineid=%lineid%+%COLS%+1
set START=%lineid%
if %LINES% EQU %linecount% (
pause >nul
exit
)
goto :A
最佳答案
我们来分析一下这部分:
:A
set LINE=
for /l %%I in (%START%,1,%COLS%) do (
set LINE=!LINE!%%G%%I%%
)
第一次循环迭代创建这个:set LINE=%G1%
对吗?第二次循环迭代:设置 LINE=%G1%%G2%
依此类推,直到 设置 LINE=%G1%%G2%%G3%%G4%%G5%
,对吗?
现在,这一行:
echo %LINE%
首先是这样扩展的:
echo %G1%%G2%%G3%%G4%%G5%
并且不会再次展开,因为%展开只是从左到右进行一次。结果是:
%G1%%G2%%G3%%G4%%G5%
对不起,您没有告诉我们您希望从程序中得到什么,但是如果您希望显示变量 G1 到 G5 的值,那么您必须重新启动此 % 扩展方式:
call echo %LINE%
对于您的其他线路,您必须仔细检查限制;很明显,在这些情况下 LINE 变量为空。
编辑:也许这就是您想要的?
set /p LINES=Enter number of lines:
set /p COLS=Enter the number of colums:
set index=0
for /L %%I in (1,1,%LINES%) do (
set LINE=
for /L %%J in (1,1,%COLS%) do (
set /A index+=1
set LINE=!LINE!%%G!index!%%
)
call echo !LINE!
)
关于file - 可变网格制作器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11326386/