2008-11-27 11 views
5

Je souhaite fournir le texte brut faisant référence à une variable d'environnement à une commande au lieu d'évaluer la variable d'environnement.Ligne de commande Windows: Non-évaluation de la variable d'environnement

Je en ai besoin pour configurer BizTalk à partir de la ligne de commande, par exemple:

BTSTask.exe AddResource -ApplicationName: App1 -type: System.BizTalk: BizTalkAssembly -Overwrite -Source: .. \ Schemas \ bin \ development \ App1.Schemas.dll -Destination:% BTAD_InstallDir% \ App1.Schemas.dll

Cette commande ajoute une ressource à une application BizTalk. Je veux que la destination soit% BTAD_InstallDir% \ App1.Schemas.dll, cependant actuellement il évalue la variable d'environnement (à rien) et utilise \ App1.Schemas.dll.

Est-il possible d'échapper ou de désactiver l'évaluation de cette variable d'environnement lors de l'analyse de \ executer cette commande?

J'ai essayé d'échapper le premier et les deux caractères de pourcentage avec une carotte (^), mais cela n'a pas arrêté l'évaluation. Lorsque j'exécute cela à l'invite de commande, il ne remplace pas la variable d'environnement, mais quand je l'exécute en tant que script, pensez-vous que c'est différent?

Répondre

3

Avez-vous essayé:

%%BTAD_InstallDir%% 

dans votre script?

Cela devrait empêcher le script d'interpréter la variable, et il transmettrait %BTAD_InstallDir% au programme.

+0

Fantastique, cela fonctionne très bien. Est-ce que cela fonctionne parce qu'il ne peut pas résoudre% BTAD_InstallDir% en tant que variable et le laisse donc comme sa valeur originale? – marcj

+1

%% est la méthode par lots pour ne pas interpréter%. Utilisé pour la variable (comme dans '%% a au lieu de% a'), puisque dans le lot% 1,% 2,% 3 ont une signification spéciale. – VonC

2

Essayez ^% au lieu de%.

+0

Merci pour votre réponse Mikeage, malheureusement, cela évalue encore la variable d'environnement. Peut-être que je devrais éditer ma question pour mentionner les approches que j'ai déjà essayées. – marcj

4

Essayez echo ^% ^% chemin dans une invite de commande, il imprime ...

chemin

au lieu d'étendre la variable d'environnement, donc je suppose que les éléments suivants devraient travailler pour vous suggéré par Mikeage

BTSTask.exe AddResource -applicationName: App1 -type: System.BizTalk: BizTalkAssembly -Overwrite -Source: .. \ Schemas \ bin \ \ développement App1.Schemas.dll -Destination: ^% BTAD_Ins tallDir ^% \ App1.Schemas.dll

+0

Assez bizarrement, même si je n'échappe pas aux pourcentages, cela fonctionne quand je le tape directement sur la ligne de commande, mais pas quand je l'exécute à partir d'un script .cmd. Des pensées? – marcj

1

Essayé:

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

Got:

%JAVA_HOME% 

[EDIT] En effet, C:\PrgCmdLine\Unix\echo.exe ^%JAVA_HOME^% fonctionne aussi, et est plus simple ...

[EDIT 2] Pour l'enregistrement: J'ai utilisé l'écho de UnxUtils pour avoir le comportement d'un programme ordinaire. Construit en écho a un comportement légèrement différent, au moins pour les guillemets%.