Windows Scripting: Si instruction, la comparaison de deux variables ne fonctionne pas

-2

J'ai cette partie du code qui fonctionne bizarre:

if !NoOfLines!==!trailer! (
   echo Count of records in DFUView interface verified ok. >> %LOG_DIR%\%SCRIPT_NAME%.log 
) else ( 
       echo Count of records in DFUView interface do not match trailer . !NoOfLines! !trailer!  Hence aborting. >> %LOG_DIR%\%SCRIPT_NAME%.log
       goto Error
)  

Même si les variables NoOfLineset trailerportent la même valeur, ce que j'ai confirmé en imprimant avec echo, la Ifcommande saute à la Elsepartie qui correspond au cas où deux variables ne sont pas égales.

Novice
la source
Qu'est-ce que Langague scripting est-ce exactement? il ne semble pas être vbs ou wscript / cscript. Aussi, ne sous-estimez jamais le danger des espaces blancs. 'chose'! = 'chose'.
Frank Thomas
Ceci est un script batch de Windows ...
Novice
J'ai essayé avec! NoOfLines! ==! trailer! au lieu de! NoOfLines! ==! trailer !, cela ne fonctionne toujours pas
Novice
2
(1) extrait de code non complet: comment sont définies les variables? (2) L'expansion différée est-elle activée? (3) Dans la elsebranche, echo "!NoOfLines!" "!trailer!": sont les mêmes?
JosefZ
@JosefZ C'est aussi ma liste de questions.
Tonny

Réponses:

2

Dans Windows Batch Scripting, les variables doivent être entourées par %not !lorsque vous n'utilisez pas d'expansion retardée *. Cette ligne de code fonctionne comme prévu:

if %NoOfLines%==%trailer% (

Plus d'informations sur la syntaxe de l' IFinstruction peuvent être obtenues à l'invite de commande en les tapant IF /?.

* Tapez Setlocal /?à l'invite de commande pour plus d'informations sur l'expansion des variables différées

Imitateur Twisty
la source
1
Mauvaise réponse,! Var! est l'utilisation correcte si une expansion retardée est souhaitée
Tonny
Merci d'avoir expliqué le vote. Le PO a-t-il mentionné l'expansion retardée?
Twisty Impersonator
1
en changeant ! % résolu le problème. Le code fonctionne bien maintenant. Merci tout le monde.
Novice
@ Tonny Si l'OP indique que l'extension différée n'est pas utilisée, envisageriez-vous d'inverser votre vote négatif?
Twisty Impersonator
1
@ Twisty Done. Il ressort clairement de ses commentaires ultérieurs que l’affiche originale n’utilisait pas l’extension différée.
Tonny