file - 可变网格制作器

标签 file batch-file

我一直在研究一个批处理文件,该文件创建如下变量网格:

%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/

相关文章:

python - "rb+"和 "wb+"有什么区别?

windows - 如何在bat文件末尾添加计数

batch-file - 如何在bat文件中使用goto函数?

command-line - Windows批处理文件 - 从当前日期计算文件名

php - 获取文件的详细信息然后插入到数据库

java - 如何在java中验证图像标题

Java-查找某段文字,然后在其后写一段文字

Linux,检查临时文件是否被创建然后被删除

java - 合并这 2 批查询?

command-line - 保持批处理程序运行