Windows 如何组合一个静态字符串和一个变量名,以生成一个已定义的变量名?
在批处理文件中,我有一些行:Windows 如何组合一个静态字符串和一个变量名,以生成一个已定义的变量名?,windows,batch-file,cmd,Windows,Batch File,Cmd,在批处理文件中,我有一些行: set "line1=bla" set "line2=what" 我想知道如何将一个变量放在一个静态字符串的末尾,以等于一个定义的变量名。 所以,canum是行号。 变量%line1%存在,但为了循环上面的代码,以便可以将任意多行写入文件,我将行号作为一个变量,每次循环都会增加,然后检查与line组合的变量是否存在。这很难解释 所以基本上,我会从一些变量开始,这些变量在定义与否上是不同的第1行,但无法定义。我希望有一个变量,该变量是一个数字,当批处理文件循环充当l
set "line1=bla"
set "line2=what"
我想知道如何将一个变量放在一个静态字符串的末尾,以等于一个定义的变量名。
所以,canum
是行号。
变量%line1%
存在,但为了循环上面的代码,以便可以将任意多行写入文件,我将行号作为一个变量,每次循环都会增加,然后检查与line
组合的变量是否存在。这很难解释
所以基本上,我会从一些变量开始,这些变量在定义与否上是不同的<可以定义代码>第1行,但无法定义。我希望有一个变量,该变量是一个数字,当批处理文件循环充当line1
中的1
或line2
中的2
时,该数字会增加一倍。每次批处理文件循环时,该数字都会增加。首先,批处理文件检查第n行是否已定义,如果已定义,则使用echo%lineNUM%>>file.txt(NUM为第n个数字)将其作为附加行回显到文件中。但是,我不知道如何将一个静态字符串(在我的例子中是test
)和一个变量(在我的例子中是%canum%
)组合成一个定义的变量名
:writeloop_setuplogical
set /a canum = %canum% + 1
if NOT defined !line%canum%! :done
echo !line%canum%!>>file.txt
这是我对刚才试图解释的内容的最好理解。
这让我的大脑受伤。有两点:在set/A中放弃自引用,您所需要的就是set/A canum+=1
。批量访问数组需要在代码块(括号)内延迟扩展索引变量.For/L循环用于执行此操作,因为“组合”变量可以使用For循环变量展开-!展开[%%i]!
为了防止错误输出,重定向语法应该是:
>>File.txt Echo !Line%Canum%!
条件测试可用于确保仅将包含定义值的变量附加到文件中
If Not "!Line%Canum%!" == "" >>File.txt Echo !Line%Canum%!
要在代码块内执行:
- 当前值
对于(!Canum!)中的%%i,如果不是“!Line%%i!”==”>>File.txt Echo!Line%%i!
- 所有价值观
对于(1,1,!Canum!)中的/L%%i,如果不是“!Line%%i!”==”>>File.txt Echo!Line%%i!