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,301 of 68,980   
   yelw0rc@gmx.net to All   
   =?UTF-8?Q?Re=3A_Benutzereingabe_2_mal_t=   
   21 Sep 18 03:02:11   
   
   Am Mittwoch, 19. September 2018 13:03:01 UTC+2 schrieb Herbert Kleebauer:   
   > 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   
      
   Interessant. Danke für den Tipp.   
      
   --- 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