2008-11-27 102 views
5

我想將指向環境變量的原始文本提供給命令,而不是評估環境變量。Windows命令行:非評估環境變量

我需要這在命令行配置BizTalk,例如:

BTSTask.exe AddResource -ApplicationName:App1的 -Type:System.BizTalk:BizTalkAssembly -overwrite -Source:.. \架構\ bin \ development \ App1.Schemas.dll -Destination:%BTAD_InstallDir%\ App1.Schemas.dll

此命令將資源添加到BizTalk應用程序。我希望目標是%BTAD_InstallDir%\ App1.Schemas.dll,但是目前它正在評估環境變量(無),並使用\ App1.Schemas.dll。

是否有可能在解析\執行此命令時轉義或禁用此環境變量的評估?

我試過用胡蘿蔔(^)逃脫第一個和兩個百分比字符,但是這並沒有停止評估。

[編輯]當我在命令提示符下執行這個命令時,它不會替換環境變量,但是當我將它作爲腳本運行時,會發生什麼想法?

回答

3

你嘗試:

%%BTAD_InstallDir%% 
在腳本

這應該阻止腳本解釋變量,並且它會將%BTAD_InstallDir%傳遞給程序。

+0

太棒了,這個作品很棒。這是否工作,因爲它不能解決%BTAD_InstallDir%作爲一個變量,因此將其保留爲原始值? – marcj 2008-11-27 13:00:33

2

嘗試^%而不是%。

+0

感謝您的回答Mikeage,不幸的是,這仍然評估環境變量。也許我應該編輯我的問題,提到我已經嘗試過的方法。 – marcj 2008-11-27 10:45:33

4

嘗試回聲^%^路徑在命令提示%它打印...

路徑

,而不是擴大了環境變量,所以我想應該以下爲你工作的建議通過Mikeage

BTSTask.exe AddResource -ApplicationName:應用1 - 類型:System.BizTalk:BizTalkAssembly -overwrite - 來源:.. \架構\ BIN \研發\ App1.Schemas.dll -Destination:^%BTAD_Ins tallDir ^%\ App1.Schemas.dll

+0

頗爲奇怪的是,即使我沒有逃過百分比,當我直接在命令行鍵入時,這種方法仍然有效,但是當我從.cmd腳本運行它時不起作用。有什麼想法嗎? – marcj 2008-11-27 11:16:20

1

嘗試:

C:\PrgCmdLine\Unix\echo.exe "%"JAVA_HOME"%" 

了:

%JAVA_HOME% 

[編輯]事實上,C:\PrgCmdLine\Unix\echo.exe ^%JAVA_HOME^%也工作,並簡單...

[編輯2]對於記錄:我使用UnxUtils的回聲具有普通程序的行爲。內置回聲具有稍微不同的行爲,至少對於引用的%符號。