這是一個簡單的例子,它修改了我想要做的變量名稱。也爲了簡單起見,我顯示的是命令行版本而不是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