windows - Nested hvis i batch script

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skriver en ganske simpel kode i batch script og jeg fandt ud af, at det falder, når jeg skriver en indlejret hvis.
Dette er min kode:


 if !client!==CTRF ( 
   if !db2\_domain! EQU 1 (
    call:upgrade\_db\_for\_CTRF !rel\_version!>> !log1! 2>&1
   )
 )


Er der noget galt i min indrykning eller måske sætter jeg parenteserne på et forkert sted?


Dette er hvad jeg vil gøre:



  1. hvis klienten er CTRF og db2\_domain=1

  2. kalder denne funktion: upgrade\_db\_for\_CTRF



Eller måske har du en anden ide om, hvordan du implementerer AND-operatør på en anden måde?

Bedste reference



  • parenteserne er nødvendige

  • fra kodefragmentet er det ikke klart, hvis setlocal EnableDelayedExpansion påberåbes

  • Brugen af ​​alle ! i stedet for \% kræves kun, hvis du er inde i en anden vedhæftet kodeblok.

  • at være ufarlig mod uafklaret vars client og db2\_domain enten dobbelt citat begge sider af ligningen eller test med if defined


Andre referencer 1


Lad os bruge dobbelt citater for at sikre, at vi ikke indfanger uønsket hvide rum. Jeg antager også her at du aktiverer setlocal enabledelayedexpansion


 if "!client!"=="CTRF" ( 
     if "!db2\_domain!"=="1" (
      echo "!db2\_domain!"
      echo "!client!"
   )
 )


Når du har bekræftet det virker, skal du tilføje din opkaldskommando igen. Vær også opmærksom på at tilføje, hvilken fejl du oplever.