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.


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.