home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   alt.msdos.batch.nt      Fun with Windows NT batch files      68,980 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 67,303 of 68,980   
   Herbert Kleebauer to Christian   
   =?UTF-8?Q?Re:_Benutzereingabe_2_mal_t=c3   
   19 Sep 18 13:03:01   
   
   From: klee@unibwm.de   
      
   On 18.09.2018 23:46, Christian wrote:   
   > Hallo,   
   >   
   > irgendwie verstehe ich es nicht.   
   > Warum muss bei folgendem Skript die Benutzereingabe 2 x erfolgen   
   > bevor er weiter geht?   
   >   
   > @echo off   
   > if 1==0 (   
   >    echo.True   
   > ) else (   
   >    echo.False   
   >    :loop   
   >    set /p eingabe=Bitte Eingabe y/n:   
   >    if "%eingabe%"=="" goto loop   
   >    echo.%eingabe%   
   >    if "%eingabe%"=="y" echo.True   
   >    if "%eingabe%"=="n" echo.False   
   > )   
   > timeout 5   
      
   Die %-Variablen in der Klammer werden ausgewertet wenn die   
   Befehle zwischen ( und ) eingelesen werden und nicht erst,   
   wenn sie ausgeführt werden. Was immer daher der Wert von   
   %eingabe% war bevor der Klammerausdruck gelesen wurde, wird   
   für den if Vergleich benutzt. Und "goto" zwischen Klammern   
   macht irgendwie immer Probleme. Am Besten ohne () arbeiten   
   und nach alter Methode einfach ungewünschte Bereiche mit   
   goto überspringen.   
      
   In deinem Fall kannst du das Programm durch eine zusätzliches   
   (eigentlich sinnloses) "goto :loop" unmittelbar vor den :loop   
   zum Laufen bringen. Keine Ahnung wieso, will es auch gar nicht   
   wissen. Ich benutze () nur für eine Folge einfacher Befehle   
   ohne z.B. if und goto.   
      
      
   @echo off   
   if 1==0 (   
      echo.True   
   ) else (   
      echo.False   
      goto :loop   
     :loop   
      set /p eingabe=Bitte Eingabe y/n:   
      if "%eingabe%"=="" goto loop   
      echo.%eingabe%   
      if "%eingabe%"=="y" echo.True   
      if "%eingabe%"=="n" echo.False   
   )   
   timeout 5   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca