在“for”循环中设置时,如何在批处理脚本中保留变量?

时间:2009-02-26 03:31:03

标签: scripting batch-file dos

我需要使用特定目录中的所有jar设置我的类路径。 Bash做如下:

CP_DELIMITER=;
for j in "$MY_HOME/javalib/*.jar"; do
    if [ "$CP" ]; then
        CP="$CP$CP_DELIMITER$j"
    else
        CP="$j"
    fi
done

但是“for”在DOS中的工作方式不同,基本上将命令发送到shell,但不会保留变量上的“set”

set CP=./
for %%j in (%MY_HOME%\javalib\*.jar) do (
    set $CP=%CP%;"%%j"
)

当你在for之外要求$CP时,你只能得到最后一个jar文件。如果你在里面回声,你可以看到%%j确实拥有所有值。

有没有人找到解决方案?

1 个答案:

答案 0 :(得分:2)

您需要使用CMD.EXE /V启用延迟环境变量扩展并使用!VAR!

set CP=./
for %%j in (%MY_HOME%\javalib*.jar) do ( set CP=!CP!;"%%j" )