2010-12-15 4 views
0

scénario plus mis à jourligne de commande Windows: la définition des variables globales à l'autre

Salut à tous:

Je suis en train de définir une variable globale à l'autre commande windows langage batch ligne. La syntaxe que j'ai essayé est comme ci-dessous:

:: these are global vars 
SET varThree=%varOne%\something 
SET varOne= 
SET varTwo=2 

:Section 
SET varOne=%varTwo% 
::more setting of varOne to other global variables 
GOTO Section2 

:Section2 
echo %varThree% 
GOTO cleanup 

:cleanup 
SET varThree= 
SET varTwo= 
SET varOne= 

semble perdre la valeur de Varone en matière de varThree%% faisant écho.

Je me demandais comment puis-je régler la variable ci-dessus correctement?

TIA.

EDIT: La section de nettoyage était là comme un moyen d'assurer les variables sont nettoyés à la sortie du programme. Quand je l'ai enlevé, il a fallu la 2ème exécution pour que varOne perde son état. De même quand je l'ai réintroduit, il a fallu la 2ème manche pour que l'état de varOne revienne. Des idées pourquoi cela se passe-t-il?

Répondre

2

Vous n'utilisez pas le pourcentage des signes sur le côté gauche. En outre, vous voudrez peut-être lire des informations sur les variables développées avec délai (comme! VarTwo! Au lieu de% varTwo%), car vous pourriez rencontrer des problèmes avec des extensions incorrectes. Voir ce lien sur les extensions retardées: Cmd.exe Documentation

Edit: Vous manque aussi un "ensemble" à gauche, donc ceci:

:Section 
%varOne%=%varTwo% 

devrait vraiment être:

:Section 
Set varOne=%varTwo% 
+0

merci pour votre réponse. Mon mauvais, mon scénario était vague et pas au point. J'ai mis à jour mon scénario. La valeur de la variable globale s'est en quelque sorte perdue et n'a pas été définie correctement. – BeraCim

+0

Il m'arrive aussi d'obtenir le même résultat du code dans votre commentaire. J'ai mis à jour le scénario et j'ai trouvé la cause du problème, mais j'ai du mal à trouver une solution pour le résoudre. – BeraCim

+0

ne cherchez pas ma situation. J'ai le problème résolu. Je pense que je déclarais l'une des variables globales deux fois ailleurs. En ce qui concerne la question dans le sujet, votre solution a fonctionné. Merci! – BeraCim

1

Vous ont tort de chercher une syntaxe "post-compilation". Dans votre scénario

SET varThree=%varOne%\something 

la cause varThree obtenue par "\ quelque chose", parce que Varone est pas encore défini. En parlant de votre scénario, vous devez utiliser

echo %varOne%%varThree% 

dans ": section2".