2008-11-27 9 views
5

Vorrei fornire il testo non elaborato che fa riferimento a una variabile di ambiente a un comando anziché valutare la variabile di ambiente.Riga di comando di Windows: non valutazione della variabile di ambiente

ho bisogno di questo per configurare BizTalk dalla riga di comando, ad esempio:

BTSTask.exe AddResource -ApplicationName: App1 -Tipo: System.BizTalk: BizTalkAssembly -overwrite -Source: .. \ schemas \ bin \ development \ App1.Schemas.dll -Destinazione:% BTAD_InstallDir% \ App1.Schemas.dll

Questo comando aggiunge una risorsa a un'applicazione BizTalk. Voglio che la destinazione sia% BTAD_InstallDir% \ App1.Schemas.dll, tuttavia al momento sta valutando la variabile di ambiente (su nulla) e utilizzando \ App1.Schemas.dll.

È possibile eseguire l'escape o disattivare la valutazione di questa variabile di ambiente durante l'analisi \ dell'esecuzione di questo comando?

Ho provato a sfuggire il primo e entrambi i caratteri in percentuale con una carota (^), tuttavia ciò non ha fermato la valutazione.

[EDIT] Quando eseguo questo comando al prompt dei comandi non sostituisce la variabile di ambiente, tuttavia lo fa quando lo eseguo come script, qualsiasi idea sul perché questo è diverso?

risposta

3

Hai provato:

%%BTAD_InstallDir%% 

nello script?

Ciò dovrebbe impedire allo script di interpretare la variabile e passerebbe al programma %BTAD_InstallDir%.

+0

Fantastico, funziona benissimo. Funziona perché non può risolvere% BTAD_InstallDir% come variabile e quindi lo lascia come valore originale? – marcj

+1

%% è il modo batch per non interpretare%. Usato per variabile (come in '%% a anziché% a'), poiché nel batch% 1,% 2,% 3 hanno un significato speciale. – VonC

2

Prova ^% anziché%.

+0

Grazie per la risposta Mikeage, sfortunatamente questo valuta ancora la variabile di ambiente. Forse dovrei modificare la mia domanda per menzionare gli approcci che ho già provato. – marcj

4

Prova eco ^%^percorso% in un prompt dei comandi viene stampato ...

percorso

invece di espandersi la variabile d'ambiente quindi credo che il seguente dovrebbe funzionare per voi come suggerito da Mikeage

BTSTask.exe AddResource -applicationName: App1 -Tipo: System.BizTalk: BizTalkAssembly -overwrite -source: .. \ schemas \ bin \ sviluppo \ App1.Schemas.dll -Destination: ^% BTAD_Ins tallDir ^% \ App1.Schemas.dll

+0

Piuttosto stranamente, anche se non sfuggo alle percentuali, funziona quando lo digito direttamente sulla riga di comando, ma non quando lo eseguo da uno script .cmd. qualche idea? – marcj

1

provato:

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

Got:

%JAVA_HOME% 

[EDIT] In effetti, C:\PrgCmdLine\Unix\echo.exe ^%JAVA_HOME^% funziona troppo, ed è più semplice ...

[EDIT 2] Per la registrazione: ho usato l'eco di UnxUtils per avere il comportamento di un programma semplice. L'eco incorporata ha un comportamento leggermente diverso, almeno per i segni% quotati.

Problemi correlati