varnik 10 Posted August 2, 2006 Report Posted August 2, 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? Quote
phoenixcp 10 Posted August 2, 2006 Report Posted August 2, 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] Quote
lefg 276 Posted August 2, 2006 Report Posted August 2, 2006 for /l %%q in (1,1,19) do ( if %%q lss 10 echo 0%%q if %%q gtr 9 echo %%q ) Quote
lefg 276 Posted August 2, 2006 Report Posted August 2, 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 Quote
varnik 10 Posted August 2, 2006 Author Report Posted August 2, 2006 Danke Edgar, die letzte Variante passt sehr gut, da die 19 im Beispiel durch eine Variable zu ersetzen ist. Funktioniert prima. Quote
varnik 10 Posted August 2, 2006 Author Report Posted August 2, 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. Quote
lefg 276 Posted August 3, 2006 Report Posted August 3, 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? Quote
varnik 10 Posted August 3, 2006 Author Report Posted August 3, 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. Quote
lefg 276 Posted August 3, 2006 Report Posted August 3, 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? Quote
lefg 276 Posted August 3, 2006 Report Posted August 3, 2006 Wie sollen die Namen, Zeichenketten denn aussehen? Quote
thorgood 10 Posted August 3, 2006 Report Posted August 3, 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 Quote
varnik 10 Posted August 3, 2006 Author Report Posted August 3, 2006 Bin mit Edgar einverstanden. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.