varnik 10 Geschrieben 2. August 2006 Melden Geschrieben 2. August 2006 Hallo zusammen, der Befehl for /l %q in (1,1,20) do echo %q gibt folgendes aus 1 2 3 ... 9 10 11 ... 19 20 Ich bräuchte jedoch 01 02 ... 09 10 11 ... 19 20 Wie?
phoenixcp 10 Geschrieben 2. August 2006 Melden Geschrieben 2. August 2006 Teil es auf zwei Befehle auf: for /l %q in (1,1,9) do echo 0%qfor /l %q in (10,1,20) do echo %q[/Code]
lefg 276 Geschrieben 2. August 2006 Melden Geschrieben 2. August 2006 for /l %%q in (1,1,19) do ( if %%q lss 10 echo 0%%q if %%q gtr 9 echo %%q )
lefg 276 Geschrieben 2. August 2006 Melden Geschrieben 2. August 2006 Ich wollte es mit ELSE machen, stehe aber wie der Ochs vorm Berg und kriege es nicht hin. Jetzt for /l %%q in (1,1,19) do ( if %%q lss 10 ( echo 0%%q ) else ( echo %%q )) pause
varnik 10 Geschrieben 2. August 2006 Autor Melden Geschrieben 2. August 2006 Danke Edgar, die letzte Variante passt sehr gut, da die 19 im Beispiel durch eine Variable zu ersetzen ist. Funktioniert prima.
varnik 10 Geschrieben 2. August 2006 Autor Melden Geschrieben 2. August 2006 Noch ein Problem. Das Ziel ist es, den Befehl-Satz nur einmal eingeben zu müssen nicht zweimal. Unter Linux geht es mit #! /bin/bash for q in $(seq 20) do if (( "$q" < 10 )) then q="0$q" fi [b]echo $q[/b] done Hier muss statt echo $q eine Reihe der Befehle stehen. In der letzten Lösung muss man diese Reihe zweimal eingeben.
lefg 276 Geschrieben 3. August 2006 Melden Geschrieben 3. August 2006 for /l %%q in (1,1,19) do ( if %%q lss 10 ( Befehl 1 Befehl 2 ) else ( Befehl 1 Befehl 2 )) Hallo Nik, so richtig verstehe ich den Wunsch nicht. Soll der Wert in der Laufvariablen ein Parameter eines Befehles sein?
varnik 10 Geschrieben 3. August 2006 Autor Melden Geschrieben 3. August 2006 for /l %%q in (1,1,19) do ( if %%q lss 10 ( Befehl 1 Befehl 2 ) else ( Befehl 1 Befehl 2 )) Hallo Nik, so richtig verstehe ich den Wunsch nicht. Soll der Wert in der Laufvariablen ein Parameter eines Befehles sein? Mit diesem Skript sollen mehre Benutzer und Verzeichnisse angelegt und entsprechende Rechte vergeben werden. Damit alle Benutzernamen immer gleichstellig werden, benötige ich diese automatische Vervollständigung für die Zahlen kleiner als 10. Im oben geposteten Linux-Skript muss man alle Befehle nur einmal eingeben. Im Windows-Skript ist es nicht der Fall - einmal für Benutzer01-Benutzer09 und einmal für andere.
lefg 276 Geschrieben 3. August 2006 Melden Geschrieben 3. August 2006 Wie sollen die Namen, Zeichenketten denn aussehen? Geht es dabei jetzt nur um die führende Null, oder muss eine Zeichenkette ergänzt, verlängert werden? Wie wird der Name grundsätzlich erzeugt? Ist das Problem nun gelöst oder nicht?
lefg 276 Geschrieben 3. August 2006 Melden Geschrieben 3. August 2006 Wie sollen die Namen, Zeichenketten denn aussehen?
thorgood 10 Geschrieben 3. August 2006 Melden Geschrieben 3. August 2006 Vielleicht so zu lösen: for /l %%q in (1,1,19) do call :cmd %%q goto endfor :cmd if %* lss 10 ( set qq=0%* ) else ( set qq=%* ) echo %qq% goto :EOF :endfor
lefg 276 Geschrieben 3. August 2006 Melden Geschrieben 3. August 2006 Eine schöne Konstruktion. :thumb1:
varnik 10 Geschrieben 3. August 2006 Autor Melden Geschrieben 3. August 2006 Bin mit Edgar einverstanden.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden