varnik 10 Geschrieben 2. August 2006 Melden Teilen 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? Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 2. August 2006 Melden Teilen 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] Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 2. August 2006 Melden Teilen 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 ) Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 2. August 2006 Melden Teilen Geschrieben 2. August 2006 Oder auch so... Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 2. August 2006 Melden Teilen 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 Zitieren Link zu diesem Kommentar
varnik 10 Geschrieben 2. August 2006 Autor Melden Teilen 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. Zitieren Link zu diesem Kommentar
varnik 10 Geschrieben 2. August 2006 Autor Melden Teilen 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. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 3. August 2006 Melden Teilen 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? Zitieren Link zu diesem Kommentar
varnik 10 Geschrieben 3. August 2006 Autor Melden Teilen 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. Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 3. August 2006 Melden Teilen 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? Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 3. August 2006 Melden Teilen Geschrieben 3. August 2006 Wie sollen die Namen, Zeichenketten denn aussehen? Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 3. August 2006 Melden Teilen 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 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 3. August 2006 Melden Teilen Geschrieben 3. August 2006 Eine schöne Konstruktion. :thumb1: Zitieren Link zu diesem Kommentar
varnik 10 Geschrieben 3. August 2006 Autor Melden Teilen Geschrieben 3. August 2006 Bin mit Edgar einverstanden. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.