【问题标题】:SET variables in batch file using FOR command使用 FOR 命令在批处理文件中设置变量
【发布时间】:2015-08-09 21:56:04
【问题描述】:

我有一个包含以下命令的 .bat 文件。

我的目标是将 CLASSPATH 变量值与 %%1 的值连接起来。

前三个命令(在 FOR 命令之外)正确连接 CLASSPATH,但 FOR 命令只对迭代的最后一个值进行。

请帮忙

    SET CLASSPATH=%CLASSPATH%;test1.jar
    SET CLASSPATH=%CLASSPATH%;test2.jar
    SET CLASSPATH=%CLASSPATH%;test3.jar

    FOR %%1 IN ("%CXFHOME%\lib\*.jar") DO SET CLASSPATH=%CLASSPATH%;%%1

【问题讨论】:

  • ... do set %%1?语法是:set var=value
  • 对不起,我已经重写了

标签: variables batch-file for-loop environment-variables


【解决方案1】:

您需要延迟扩展:

setlocal enabledelayedexpansion
FOR %%1 IN ("%CXFHOME%\lib\*.jar") DO SET CLASSPATH=!CLASSPATH!;%%1
echo %classpath:~1%

有关延迟扩展的解释和演示,请参阅here

【讨论】:

    【解决方案2】:

    在您的脚本中使用setlocal enabledelayedexpansion,for 循环的最后一个值发生串联的原因是,for 循环在运行时被视为单个指令,因此,所有值都被替换,最后一个值只反映。

    【讨论】:

      猜你喜欢
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 2016-04-14
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多