繁体   English   中英

Windows Batch:从FOR循环中访问变量

[英]Windows Batch: acessing variables from inside FOR loop

我正在尝试在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循环内部访问在FOR循环外部设置的变量? 我不知道为什么在for循环中看不到_family_name变量。 我对批处理脚本有些陌生。 我习惯于C ++和Java编程,因此很可能我的想法不适用于批处理领域。

我还需要将字符串三元组“ AA:NNN:AAAAAA”分成三个单独的变量。 我试图提出一个嵌套的for循环,但是我无法解决这个问题。

为了清楚起见,使该示例变得简单。 实际的批处理比这更复杂。 我必须从循环中访问10-12个变量。 因此,请在回答之前考虑这方面。 提前致谢。

如果_family_name实际上是在另一个(外)循环中设置的,则需要启用延迟扩展,如下所示:

@echo off
setlocal enabledelayedexpansion

for ...
  set foo=bar
  for ...
    echo !foo!
  )
)

请注意,您可以使用!exclamations!访问变量!exclamations! 而不是那里的%percents%

看看这是否对您有帮助:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM