106949
Goto Top

Variable soll 4stellig ausgegeben werden

Hi,
(ich schon wieder) face-smile

Mein Problem: ich will in einem Batchskript eine Zahl 4stellig ausgeben lassen.
Heißt: wenn ich Dateien erstelle, soll die erste Zahl Test_0001.htm heißen, die 2. Test_0002.htm usw...

Wie stelle ich das am dümmsten an?

LG

Content-ID: 185855

Url: https://administrator.de/forum/variable-soll-4stellig-ausgegeben-werden-185855.html

Ausgedruckt am: 23.04.2025 um 00:04 Uhr

bastla
bastla 03.06.2012 um 18:29:14 Uhr
Goto Top
Hallo StefanHuber und willkommen im Forum!

An sich etwa so:
@echo off & setlocal enabledelayedexpansion
for /L %%i in (1,1,100) do (
    set /a Nr=10000+%%i
    echo Test_!Nr:~-4!.htm
)
Näheres dazu siehe "set /?" - und übrigens: unmittelbar mit der Schleifenvariablen (hier "%%i") geht das nicht ...

Grüße
bastla
106949
106949 03.06.2012 um 18:49:16 Uhr
Goto Top
Hi Bastla,

schon mal herzlichen Dank face-smile

Doch wie so oft kommt mit der Antwort gleich die nächste Frage...

Wie kann ich mit diesen Zahlen rechnen? Ich will von der Nummer immer gleich die Zahl eins niedriger und eins höher. Ich hätte das so gelöst?! Geht aber leider net
for /L %%i in (1,1,%OBERGRENZE%) do (
SET /A ZAEHLER=10000+%%i
SET /A PREVIOUS=!ZAEHLER:~-4!
SET /A NEXT=!ZAEHLER:~-4!+1
)

LG Stefan Huber
bastla
bastla 03.06.2012 aktualisiert um 19:29:35 Uhr
Goto Top
Hallo StefanHuber!

Vielleicht stellt sich die Frage nicht mehr, wenn Du meinen Hinweis bezüglich
set /?
beachtest - ansonsten: Unterscheide zwischen Berechnung und Ausgabe ...

Grüße
bastla
106949
106949 04.06.2012 um 08:07:02 Uhr
Goto Top
Hi Bastla,

dann stelle ich mich etwas doof an... face-sad

Laut "set /?" steht da, dass

Wenn Sie einen der arithmetischen oder Moduloperatoren verwenden, müssen
Sie die Zeichenfolge für den Ausdruck in Anführungszeichen setzen.

Klappt bei mir aber auch net!

LG Stefan

P.S: beim Quellcode muss bei Previous folgendes stehen.
SET /A PREVIOUS=!ZAEHLER:~-4!-1
SET /A NEXT=!ZAEHLER:~-4!+1
106949
106949 04.06.2012 um 10:42:14 Uhr
Goto Top
Hi, habe es nun wie folgt gelöst
@ECHO off & setlocal enabledelayedexpansion
TITLE PICS - BATCH
SET /P OBERGRENZE=Anzahl: 
SET /A "Counter=1"  
SET /A Grenze=%OBERGRENZE%+1

:DATEI-ERSTELLUNG
SET /A ZAEHLER=10000+%COUNTER%
SET /A PREVIOUS=9999+%COUNTER%
SET /A NEXT=%COUNTER%+10001

SET /A "Counter+=1"  
if %COUNTER%==%GRENZE% goto ENDE
goto DATEI-ERSTELLUNG
pause

:ENDE
CLS
ECHO ENDE
PAUSE
bastla
bastla 04.06.2012 um 10:42:15 Uhr
Goto Top
Hallo StefanHuber!

Eigentlich war der Hinweis auf die Hilfe für das Verständnis der Teilstringbildung (im konkreten Fall: letzte 4 Zeichen) gedacht - für die Berechnung wird ja der gesamte Wert (also 10000 + lfd Nr) benötigt - ganz einfach daher:
SET /A PREVIOUS=!ZAEHLER!-1
SET /A NEXT=!ZAEHLER!+1
und erst bei der Verwendung (als Beispiel nochmals eine Ausgabe) das "Abschneiden" der letzten 4 Stellen:
echo !PREVIOUS:~-4!
echo !NEXT:~-4!
Grüße
bastla
Penny.Cilin
Penny.Cilin 04.06.2012 um 10:57:28 Uhr
Goto Top
Hallo Stefan,

hast Du vielleicht
 echo off & setlocal enabledelayedexpansion  
vorher vergessen?
106949
106949 05.06.2012 um 11:38:43 Uhr
Goto Top
@bastla: es ging halt nicht mit der Variablen ZAEHLER zu rechnen.

@Penny.Cilin: Ne, an den ersten Zeilen habe ich nixs verändert...

@beide: danke für die Hilfe face-smile