Ale*_*ets 5 variables batch-file
假设我有变量a与内容" 123 "和变量b123与其中的一些文本.出于某种原因,我想使用变量a作为第二个var名称的一部分.像这样的东西:
SET a=123
SET b123=some_text_in_it
rem i want next line to output "some_text_in_it"
echo %b%a%%
Run Code Online (Sandbox Code Playgroud)
所以我想将文本与var内容连接起来,并使用结果字符串作为变量名称来回显该内容.上面的示例不起作用,我明白为什么,可能我需要添加一些灌浆.怎么做,最好在一条线上?
这有两种常用的方法
CALL或DelayedExpansion
setlocal EnableDelayedExpansion
SET a=123
SET b123=some_text_in_it
rem i want next line to output "some_text_in_it"
call echo %%b%a%%%
echo !b%a%!
Run Code Online (Sandbox Code Playgroud)
该CALL变体使用的事实是,一个调用将第二次重新分析该行,第一次只会%a%扩展并且double %%将被缩减为单个%
call echo %b123%
而在第二步%b123%中将扩展.
但CALL技术速度慢且不太安全,因此应优先考虑延迟扩展.
DelayedExpansion在感叹号在稍后的解析器阶段中扩展而不是百分比的扩展时起作用.
这也是原因,为什么延迟扩张更加安全.
编辑:包含数字的数组的方法
如果您使用仅包含数字的数组,您也可以使用它set /a来访问它们.
这比技术FOR或CALL技术要容易得多,它也可以在块中运行.
setlocal EnableDelayedExpansion
set arr[1]=17
set arr[2]=35
set arr[3]=77
(
set idx=2
set /a val=arr[!idx!]
echo !var!
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11552 次 |
| 最近记录: |