2 Befehle in einer FOR-Schleife

Dieses Thema 2 Befehle in einer FOR-Schleife im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von Björn_2, 9. Apr. 2005.

Thema: 2 Befehle in einer FOR-Schleife Hallo, ich muss zwei Befehle in einer For-Schleife ausführen. Wie geht das? Die Doku sagt mir, dass es nur einen...

  1. Hallo,

    ich muss zwei Befehle in einer For-Schleife ausführen. Wie geht das? Die Doku sagt mir, dass es nur einen Befehl geben kann.

    Ich möchte ein Script schreiben, dass mir den nächsten freien Laufwerksbuchstaben ausgibt.

    Ich wollte das Script ähnlich gestalten, wie das Script zur CD-ROM erkennung, wobei in diesem Script eine Datei cd.txt existiert.
    Code:
    FOR %%d IN (c: d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s: t: u: v: w: x: y: z:) DO IF EXIST %%d\CD.txt SET cdrom=%%d
    Mit dem Befehl net use w: bspw. kann man anhand des errorlevels erfragen, ob der Buchstabe bereits mit einem Netzlaufwerk verbunden ist.

    Ich muss also irgendwie die folgenden Zeilen in meiner for-Schleife unterbringen:
    net use %laufwerksbuchstabe%
    if %errorlevel%==2 (nicht verbunden) oder
    if %errorlevel%==0 (verbunden)

    Könnt ihr mir bitte weiter helfen?

    Gruß
    Björn
     
  2. Nimm ne neue Batchdatei und ruf die auf. Dann haste nur einen Befehl in der FOR Schleife.

    Eddie
     
  3. Das Problem ist nur:
    Wie kriege ich den ermittelten Laufwerksbuchstaben wieder zurück?

    So ganz weiß ich noch nicht, wie das gehen soll.
     
  4. Den hast Du mit set doch schon festgelegt. Du solltest ihn also auch einfach abfragen können.

    Eddie
     
  5. ???

    Genau den Laufwerksbuchstaben will ich doch dann mittels einer zweiten Batch-Datei ermitteln und erst dann mit set festlegen.

    Mein Problem ist doch, dass ich zum ermitteln des Laufwerksbuchstabens zwei Befehle brauche.
    Die for-schleife liefert den zu testenden Buchstaben und wenn der Buchstabe frei ist, mir also net use den richtigen errorlevel mitteilt, dann will ich mit set den Buchstaben festlegen.

    Also:
    Code:
    net use f:
    if %errorlevel%==2 set laufwerksbuchstabe f:
    net use g:
    if %errorlevel%==2 set laufwerksbuchstabe g:
    ...
    net use z:
    if %errorlevel%==2 set laufwerksbuchstabe z:
    Natürlich könnte ich nach dem ersten Match abbrechen, doch dann hätte die for-schleife noch einen weiteren Befehl. Ich kann das ganze natürlich so machen wie im Code oben exemplarisch gezeigt, doch wäre das keine saubere Programmierung.
     
  6. Hallo,

    probier es mal so (nicht getestet):

    Code:
    FOR %%d IN (c: d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s: t: u: v: w: x: y: z:) DO Call :Pruefen %%d
    goto :EOF
    
    :Pruefen
    REM %%d wurde aus obiger Schleife durch den Call Befehl in %1 abgelegt.
    net use %1
    if %errorlevel%==2 ...
    if %errorlevel%==0 ...
    ...
    REM Nachfolgendes goto :EOF funktioniert als Next, d.h. springt in die Schleife zurück
    goto :EOF
    
    
    Das Label EOF darf nicht definiert werden, weil es hier eine besondere Aufgabe hat.
    Siehe
    Code:
    help call|more
    an der Eingabeaufforderung.
     
  7. Hallo Björn,

    dein ganzes Problem reduziert sich mit VBScript auf die folgenden
    wenigen Zeilen:

    Code:
    ' Free Drive-Letters
    option explicit
    
    Dim objFSO    
    Dim nIndex    
    Dim strTemp   
     
    Set objFSO = CreateObject(Scripting.FileSystemObject)
    
    For nIndex = 0 To 25 Step 1
      if objFSO.DriveExists(Chr(nIndex+65)) then
       strTemp = strTemp & Drive:  & Chr(nIndex + 65) & :\  exists & vbCrLf
      Else
       strTemp = strTemp & Drive:  & Chr(nIndex + 65) & _
                           :\  is free Drive-Letter! & vbCrLf
      End If
     Next
    Call MsgBox(strTemp)
    
    set objFSO = nothing
    
    Bitte versteh mich nicht falsch!
    Ich möchte dir keinesfalls vorschreiben, auf welche Art du welches Problem zu lösen hast!
    Ich möchte nur verdeutlichen, dass sich manche Dinge mit anderen
    Werkzeugen einfacher und zeitsparender lösen lassen!

    Gruss

    Reiner

    PS.: Die DOS-/Windows-Batchsprache war (im Gegensatz zu
           den Sprachen der UNIX-Shells) immer eine Krücke und wird
           es auch immer bleiben.
     
  8. Vielen Dank Reiner!

    Ich werde das Script gleich mal ausprobieren.
    Warum soll ich dich falsch verstehen? Wenn es mit Bordmitteln nicht zu lösen ist oder es bessere Alternativen gibt, dann bin ich über jeden anderen Vorschlag sehr dankbar.

    Gruß
    Björn
     
Die Seite wird geladen...

2 Befehle in einer FOR-Schleife - Ähnliche Themen

Forum Datum
Excel 2002 - 2 befehle in einer Zelle augeben Microsoft Office Suite 1. Juni 2006
Die 15 wichtigsten Windows-Befehle Windows XP Forum 26. Juni 2010
Kommandozeile: 2 gleiche externe Befehle Windows XP Forum 18. Dez. 2012
Hilfe beim Verständnis von Batch-Befehlen Webentwicklung, Hosting & Programmierung 25. Juli 2012
Mit php HTML-Befehle in Code entfernen oder ignorieren Webentwicklung, Hosting & Programmierung 20. Jan. 2012