tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
716
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Dynarius Dynarius ist offline Rookie
    Registriert seit
    Apr 2011
    Beiträge
    8
    Hallo,

    ich habe echt ewigkeiten gesucht aber nicht gefunden. Ich habe folgenden Quellcode:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    for /F "tokens=1,2 delims=," %%a in (C:\export.txt) do call :start %%a %%b
     
    goto :eof
     
    :start
        set name=%1
        set telefon=%2
        set shorty=%telefon:~-4%
        echo [%1] [%2] wird zu [%name%] [%shorty%]
    goto :eof
    pause

    Kann mir jemand erkären, warum hier ":start %%a %%b" auf die Variablen %%a und %%b zugegriffen wird, bzw. habe ich es auch mal mit ":start %%a %%c" probiert da funktioniert es nicht. Warum aber nicht ?

    %%b wurde doch gar nicht definiert wieso speichert er mir darin trotzdem einen Wert ab ?

    Wäre echt super wenn mir das einer erklären könnte
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Hi.
    Zitat Zitat von Dynarius Beitrag anzeigen
    Kann mir jemand erkären, warum hier ":start %%a %%b" auf die Variablen %%a und %%b zugegriffen wird, bzw. habe ich es auch mal mit ":start %%a %%c" probiert da funktioniert es nicht. Warum aber nicht ?

    %%b wurde doch gar nicht definiert wieso speichert er mir darin trotzdem einen Wert ab ?
    Die Eingabe wird in "Token" (an Kommas) getrennt und es werden der 1. und der 2. Token an Variablen zugewiesen. Die "for /F" Schleife arbeitet nun mal nach diesem Prinzip.

    Lies dir doch einfach mal die Hilfe ("help for") durch.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    Dynarius Dynarius ist offline Rookie
    Registriert seit
    Apr 2011
    Beiträge
    8
    hab mir die hilfe schon durchgelesen, dort wird aber meine frage nicht beantwortet. An sich verstehe ich die for-schleife auch die tokens die zeile für zeile ausgelesen werden. Das einzige was ich an der For-Schleife nicht verstehe ist eben der schluss "%%a %%b". Es scheint mir fast als hätte Batch seine eigene Reihenfolge denn wenn man folgendes macht:

    Code :
    1
    
    for /F "tokens=1,2 delims=," %%b in (C:\export.txt) do call :start %%b %%c

    funktioniert es wieder
     

  4. #4
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    ":start" ist eine Sprungmarke ... hast Du danach gefragt

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  5. #5
    Dynarius Dynarius ist offline Rookie
    Registriert seit
    Apr 2011
    Beiträge
    8
    nee nee, mir geht es hauptsächlich nur um die letzten beiden Variablen in der Schleife "%%a %%b"
     

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Zitat Zitat von Dynarius Beitrag anzeigen
    hab mir die hilfe schon durchgelesen, dort wird aber meine frage nicht beantwortet. An sich verstehe ich die for-schleife auch die tokens die zeile für zeile ausgelesen werden. Das einzige was ich an der For-Schleife nicht verstehe ist eben der schluss "%%a %%b". Es scheint mir fast als hätte Batch seine eigene Reihenfolge denn wenn man folgendes macht:

    Code :
    1
    
    for /F "tokens=1,2 delims=," %%b in (C:\export.txt) do call :start %%b %%c

    funktioniert es wieder
    Ja, und?! Was ist jetzt daran nicht zu verstehen?
    Zitat Zitat von help for
    tokens=x,y,m-n - Gibt an, welche Token von jeder Zeile an die
    FOR-Schleife weitergegeben werden.
    Das führt dazu, dass zusätzliche Variablen erzeugt
    werden.
    Mit der Form m-n wird dabei ein Bereich vom
    m-ten bis zum n-ten Token angegeben. Wenn das letzte
    Zeichen ein Sternchen ist, wird eine zusätzliche
    Variable deklariert, die den verbleibenden Text
    dieser Zeile enthält.
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #7
    Dynarius Dynarius ist offline Rookie
    Registriert seit
    Apr 2011
    Beiträge
    8
    Ok, heißt das dann das er im prinzip den ersten Token in %%a schreibt und den zweiten dann automatisch in %%b ****
     

  8. #8
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Zitat Zitat von Dynarius Beitrag anzeigen
    Ok, heißt das dann das er im prinzip den ersten Token in %%a schreibt und den zweiten dann automatisch in %%b ****
    Ja. Das ist alles in der Hilfe sehr gut erklärt:
    Zitat Zitat von help for
    Code :
    1
    
    FOR /F "eol=; tokens=2,3* delims=, " %i in (Datei.txt) do @echo %i %j %k
    Dabei ist %i explizit deklariert, während %j und %k implizit durch die
    Option "tokens=" deklariert werden.
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  9. #9
    Dynarius Dynarius ist offline Rookie
    Registriert seit
    Apr 2011
    Beiträge
    8
    interessant ist aber das er die variablen nur in der schleife hat. sprich %%a %%b. Wenn ich nämlich in der sprungmarke:

    :start
    echo %%a %%b

    mache funktioniert es nicht. Erst wenn man folgendes in die Sprungmarke schreibt:

    :start
    echo %1 %2

    funktioniert es wieder.
     

  10. #10
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Zitat Zitat von Dynarius Beitrag anzeigen
    interessant ist aber das er die variablen nur in der schleife hat.
    Ich finde das nicht sonderlich interessant noch irgendwie überraschend.
    Zitat Zitat von help for
    tokens=x,y,m-n - Gibt an, welche Token von jeder Zeile an die FOR-Schleife weitergegeben werden.
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Batch + Schleife
    Von Herli im Forum Sonstige Sprachen
    Antworten: 2
    Letzter Beitrag: 04.09.08, 16:01
  2. Batch, For-Schleife initialsieren
    Von rkrause im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 02.02.08, 13:07
  3. Antworten: 3
    Letzter Beitrag: 14.08.07, 07:58
  4. [Batch] For-Schleife - Wie gehts?
    Von Azi im Forum Sonstige Sprachen
    Antworten: 2
    Letzter Beitrag: 23.09.05, 22:04
  5. Problem mit Schleife in Batch Datei
    Von coolduke im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 08.07.04, 12:46