这是一个简单的例子,它修改了我想要做的变量名称。也为了简单起见,我显示的是命令行版本而不是bat文件版本。你如何在DOS下抑制环境变量扩展?
我正在做以下工作。
> echo %foo%
%foo%
但是,如果foo是一个有效的环境变量,我没有得到期望的输出(%FOO%)由于环境变量扩展。
> set foo=bar
> echo %foo%
> echo %%foo%%
bar
%bar%
现在,我有一个黑客做(下面的例子),但我不知道是否有是要么输出一个“%”字符或压制的环境变量扩展一个更清洁的方式。
> set foo=bar
> set percent=%
> echo %percent%foo%percent%
%foo%
此外,如果需要的解决方案在一个bat文件是不同的(如%%而非%或%1%而不是1%),请让我知道。
我的实际使用案例是在带有SETX的bat文件中设置全局环境变量,这些变量依赖于在其中扩展的另一个环境变量。
你能解释一下:“依靠另一个环境变量来扩展它们。”你想要一些嵌套的扩展,但不是在同一个可解析的字符串中的其他人? – cdkMoose 2010-01-13 18:04:53
@cdkMoose:我想设置一个全局env。 var是类似'FOO_SDK_BIN =%FOO_SDK%/ BIN',但不能用SETX扩展'%FOO_SDK%'。然后,如果我使用SETX更改FOO_SDK变量路径,那么依赖它的所有变量也将被正确地重新设置。这只是为了简化一大堆开发机器的设置而使用的脚本,我们在这里使用了第三方SDK,这些第三方SDK有许多像这样的env变量,都可以植入单个env变量。 – Adisak 2010-01-13 18:10:41
我不是家族的SETX,但它听起来像是你在不希望它用SETX扩展“我想设置一个全局env。var为类似FOO_SDK_BIN =%FOO_SDK%/ BIN但不能扩展用SETX%FOO_SDK%“。但是,稍后您希望在使用SETX更改变量后面的值后扩展它。在任何一项声明中,它将会或不会扩大,但不会同时扩大。 – cdkMoose 2010-01-13 18:50:27