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-Key: 185855

Url: https://administrator.de/contentid/185855

Printed on: April 25, 2024 at 19:04 o'clock

Member: bastla
bastla Jun 03, 2012 at 16:29:14 (UTC)
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
Mitglied: 106949
106949 Jun 03, 2012 at 16:49:16 (UTC)
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
Member: bastla
bastla Jun 03, 2012 updated at 17:29:35 (UTC)
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
Mitglied: 106949
106949 Jun 04, 2012 at 06:07:02 (UTC)
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
Mitglied: 106949
106949 Jun 04, 2012 at 08:42:14 (UTC)
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
Member: bastla
bastla Jun 04, 2012 at 08:42:15 (UTC)
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
Member: Penny.Cilin
Penny.Cilin Jun 04, 2012 at 08:57:28 (UTC)
Goto Top
Hallo Stefan,

hast Du vielleicht
 echo off & setlocal enabledelayedexpansion  
vorher vergessen?
Mitglied: 106949
106949 Jun 05, 2012 at 09:38:43 (UTC)
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