Batch: For Schleifen ???

Dieses Thema Batch: For Schleifen ??? im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von FreeKevin, 2. Okt. 2006.

Thema: Batch: For Schleifen ??? Hallo Batch Programmierer, Ich bin sehr an der Batch Programmierung interessiert, (habe auch schon fast alle...

  1. Hallo Batch Programmierer,

    Ich bin sehr an der Batch Programmierung interessiert, (habe auch schon fast alle Befehle drauf und schon ein paar sehr nützliche tools hergestellt) aber ich habe bis heute immer noch nicht verstanden wie und wofür man diese For Schleifen benutzt.

    Vielleicht könnte mir das ein eingefleischter Programmierer nochmal näher erklären (Ich habe schon sämtliche Tutorials dazu durchgelesen aber nie verstanden :| ).

    Diesen Script kann man zur Erklärung verwenden:

    @echo off
    :start

    for /F tokens=1,2,3,4,5,6,7 delims=.:, %%1 IN (%date%.%time%) do (
    if /i exist z:\tempdat (
    if not %%1.%%2.%%3.%%4:%%5:%%6,%%7 == %date%.%time% echo fs-e
    %%1.%%2.%%3.%%4:%%5:%%6,%%7 %date%.%time% >> log.txt
    )
    if /i exist y:\tempdat (
    if not %%1.%%2.%%3.%%4:%%5:%%6,%%7 == %date%.%time% echo fs-f
    %%1.%%2.%%3.%%4:%%5:%%6,%%7 %date%.%time% >> log.txt
    )

    if /i exist \\dc1\c$\pcsoft (
    if not %%1.%%2.%%3.%%4:%%5:%%6,%%7 == %date%.%time% echo dc1
    %%1.%%2.%%3.%%4:%%5:%%6,%%7 %date%.%time% >> log.txt
    )
    if /i exist \\dc2\c$\pcsoft (
    if not %%1.%%2.%%3.%%4:%%5:%%6,%%7 == %date%.%time% echo dc2
    %%1.%%2.%%3.%%4:%%5:%%6,%%7 %date%.%time% >> log.txt
    )
    )

    ping fs-e -n 1 -i 1
    if %errorlevel% == 1 echo Ping fs-e %date%.%time% >> log.txt
    ping fs-f -n 1 -i 1
    if %errorlevel% == 1 echo Ping fs-f %date%.%time% >> log.txt
    ping dc1 -n 1 -i 1
    if %errorlevel% == 1 echo Ping d1 %date%.%time% >> log.txt
    ping dc2 -n 1 -i 1
    if %errorlevel% == 1 echo Ping dc2 %date%.%time% >> log.txt


    sleep 1
    goto start
     
  2. na ich kanns ja mal probieren,

    die For Schleifen sind in der Batch Programmierung das mächtigste Mittel überhaupt, da man damit das meiste realisieren kann.

    Zu deinem Beispiel :

    Code:
    @echo off
    :start
    
    for /F tokens=1-7 delims=.:,  %%a IN (%date%.%time%) do (
    REM /i weglassen!
    if exist z:\tempdat (
    if not %%a.%%b.%%c.%%d:%%e:%%f,%%g == %date%.%time% (
    echo fs-e %%a.%%b.%%c.%%d:%%e:%%f,%%g %date%.%time% >> log.txt
    )
    )
    .....
    
    Was ich aber an deinem Beispiel nicht versteh ist, warum der Vergleich der Zeit innerhalb der For-SChleife?
    > %%a.%%b.%%c.%%d:%%e:%%f,%%g == %date%.%time% ist immer wahr, weil zum Beginn der Schleife alle
    normalen Variablen (also nicht %%a etc.) innerhalb der For-Schleife (bspw. %date%.%time%) und in den Klammern
    (%date%.%time%) erweitert werden (d.h. nicht während der Laufzeit), und somit bei jedem Durchlauf den gleichen Wert haben.



    ich selber benutze hauptsächlich fast nur die For-Schleife mit den Parameter /F (reicht eigentlich aus),
    bspw. kann man auch einen Befehl ausführen und auswerten:

    For /F %%a in (' dir /A/B *->) do (echo %%~nxa)



    für weitere Hilfe einfach mal in der cmd.exe->if /?' oder->for /?' eingeben

    mfg
     
  3. Hallo Batch Programmierer,

    Um nochmal alle Unklarheiten zu korrigieren muss ich sagen, dass ich diesen Script im Netz gefunden habe. Ich weiss also auch nicht ob Dieser falsch oder richtig ist.




    Aber nochmal zu der Erklärung des For Befehls:
    ich habe einfach mal den Folgenden Text aus der CMD übernommen


    FOR /L %Variable IN (Start,Schritt,Ende) DO Befehl [Parameter]

    Der Satz ist eine Folge von Zahlen von Start bis Ende und der
    angegebenen Schrittweite. So erzeugt (1,1,5) die Folge 1 2 3 4 5 un
    (5,-1,1) erzeugt die Folge (5 4 3 2 1).

    FOR /F [Optionen] %Variable IN (Dateiensatz) DO Befehl [Parameter]
    FOR /F [Optionen] %Variable IN (Zeichenkette) DO Befehl [Parameter]
    FOR /F [Optionen] %Variable IN (Befehl) DO Befehl [Parameter]


    Die größte Frage ist erstmal: Was macht der for Befehl?

    - wofür steht das /f

    es wäre nett, wenn jemand die anderen Teile mal erklären könnte. :1
     
  4. Die Erklärung kommt bei mir gleich (nach einem Tastendruck): :coolsmiley:

    'for' ist eine Schleife, die einen bzw. mehrere Befehlt enthält, die mehrmals wiederholt werden. Wie oft diese Anweisungen wiederholt werden und noch einiges mehr werden im Kopf (zB: FOR /F [Optionen] %Variable IN (Dateiensatz) DO) festgelegt.

    Grüße,
    don_basto.
     
  5. Hallo leute,

    wollte mal fragen warum das ned geht:

    for %i in <woche1 woche2 woche3> do mkdir %i

    herauskommen SOLLTE
    Ordner woche1 und Ordner woche2

    es kommt aber
    i% ist syntaktisch an dieser Stelle nicht verarbeitbar.

    :'(


    Need help
     
  6. :1 Hallo

    Also ich hab MS Win XP [Version 5.1.2600]


    :) Mein Lösungsvorschlag:
    ----------------------------------------------------------------------------------
    @echo off
    cd %userprofile%\desktop
    md Test
    if not exist Test goto :pause_I
    cd Test
    ::
    :: Hier zu Deiner Frage, hoff des war was Du gemeint hast
    ::
    :Anzahl_der_Ordner
    set max=10
    for /l %%z in (1,1,%max%) do md woche%%z
    REM: Oder einfach in einer Zeile: for /l %z in (1,1,10) do md woche%z
    ::
    :: Zur Sicherheit
    ::
    :Ordner_erstellt
    if not exist woche%max% goto :pause_II
    if exist woche%max% exit
    :pause_I
    ping 127.0.0.0 > nul
    goto :Anzahl_der_Ordner
    :pause_II
    ping 127.0.0.0 > nul
    goto :Ordner_erstellt
    ----------------------------------------------------------------------------------

    Je nach dem welchen Wert die Variable max hat, so viele Ordner werden im Testverzeichnis erstellt.

    Wenn du nur den FOR Befehl brauchst, dann würd ich des hier irgendwie einbauen:

    for /l %z in (1,1,10) do md woche%z

    => Hier würden z.B. 10 Ordner (woche1 - woche10) erstellt (Pfad musst halt noch angeben mml).
     
  7. @NichWeiss


    Nochmal zu den Wochenordnern, so gehts auch: :froehlich1:

    ---------------------------------------------------------------------
    for %%d In (1 2 3 4 5 6 7 8 9 10 ) do md woche%%d
    ---------------------------------------------------------------------


    ___________________________________________
    Schade das mar als Gast nicht editieren kann ;D
     
Die Seite wird geladen...

Batch: For Schleifen ??? - Ähnliche Themen

Forum Datum
Hilfe zu einem einfachen Batchjob gesucht Software: Empfehlungen, Gesuche & Problemlösungen 22. Mai 2016
Dienstneustart in Aufgabe mit Protokoll unter R2008 (Batch) Windows Server-Systeme 5. März 2015
Pfade in Batchdatei Windows 7 Forum 18. Feb. 2015
Dateigröße auslesen mit batch programmierung Software: Empfehlungen, Gesuche & Problemlösungen 6. Feb. 2015
Wie Monitorausgabe in Batch Variable einbinden ? Linux & Andere 10. Jan. 2015