我试图在DOS批次中做这个相当基本的事情:
@echo off
set _sets=^
RO:111:Rondonia,^
AC:112:Acre,^
AM:113:Amazonas,^
RR:114:Roraima
set _family_name=MyFamily
FOR %%i IN (%_sets%) DO (
echo %%i ----- %_family_name%
)
输出:
RO:111:Rondonia -----
AC:112:Acre -----
AM:113:Amazonas -----
RR:114:Roraima -----
-----应该出现" MyFamily",但没有出现。
如何从内部访问FOR循环外设置的变量?我不知道为什么_family_name变量在for循环中不可见。我对批处理脚本有些新意。我习惯于C ++和Java编程,因此我的想法很可能不适用于批处理领域。
我还需要拆分字符串三元组" AA:NNN:AAAAAA"分为三个独立变量。我试图想出一个嵌套的for循环,但我无法解决这个问题。
为清楚起见,这个例子很简单。实际批处理比这更复杂。我必须从循环内访问10-12个变量。所以请在回答之前考虑这个方面。提前谢谢。
答案 0 :(得分:2)
如果_family_name
实际上是在另一个(外部)循环中设置的,则需要使用以下内容启用延迟扩展:
@echo off
setlocal enabledelayedexpansion
for ...
set foo=bar
for ...
echo !foo!
)
)
请注意,您使用!exclamations!
而不是%percents%
访问变量。
答案 1 :(得分:1)
看看这是否对您有所帮助:
FOR /f %%a "tokens=1-4 delims=," IN ("%_sets%") DO (
echo %%a ----- %_family_name%
echo %%b ----- %_family_name%
echo %%c ----- %_family_name%
echo %%d ----- %_family_name%
)