Rechnen im Batchscript (mit set /a) folgender Fehler erscheint-
[Edit] Hm, ich setz es mal auf "gelöst"... Biber, 2.9.2006 [/Edit]
Hallo,
in den Zeilen die mit @set beginnen, kommt folgender Fehler:
Invalid number. Numeric constants are either decimal (17), hexadecimal (0x11), or octal (021).
Ich hab jetzt schon mit google gesucht, allerdings nichts gefunden an was das liegen könnte. auch set /? hat mir nicht geholfen... in myjahr steht 2006 in mymonat 08 und in mytag 29.
@echo off
REM Datum auslesen
@for /F "tokens=1,2,3 delims=." %%a in ('date /T' ) do @set MYMONAT=%%b
@for /F "tokens=1,2,3 delims=." %%a in ('date /T' ) do @set MYJAHR=%%c
@for /F "tokens=1,2,3 delims=." %%a in ('date /T' ) do @set MYTAG=%%a
@for /F "tokens=1,2,3 " %%a in ('@echo %MYJAHR%') do @set MYJAHR=%%a
echo %myjahr%%mymonat%%mytag%
IF MYMONAT LEQ 3 (
@set /a MYMONAT = %MYMONAT% + 9
@set /a MYJAHR = %MYJAHR% - 1
) else (
@set /a MYMONAT = %MYMONAT% - 3
)
Hallo,
in den Zeilen die mit @set beginnen, kommt folgender Fehler:
Invalid number. Numeric constants are either decimal (17), hexadecimal (0x11), or octal (021).
Ich hab jetzt schon mit google gesucht, allerdings nichts gefunden an was das liegen könnte. auch set /? hat mir nicht geholfen... in myjahr steht 2006 in mymonat 08 und in mytag 29.
@echo off
REM Datum auslesen
@for /F "tokens=1,2,3 delims=." %%a in ('date /T' ) do @set MYMONAT=%%b
@for /F "tokens=1,2,3 delims=." %%a in ('date /T' ) do @set MYJAHR=%%c
@for /F "tokens=1,2,3 delims=." %%a in ('date /T' ) do @set MYTAG=%%a
@for /F "tokens=1,2,3 " %%a in ('@echo %MYJAHR%') do @set MYJAHR=%%a
echo %myjahr%%mymonat%%mytag%
IF MYMONAT LEQ 3 (
@set /a MYMONAT = %MYMONAT% + 9
@set /a MYJAHR = %MYJAHR% - 1
) else (
@set /a MYMONAT = %MYMONAT% - 3
)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 38931
Url: https://administrator.de/contentid/38931
Ausgedruckt am: 26.11.2024 um 15:11 Uhr
7 Kommentare
Neuester Kommentar
Das Problem liegt nicht an der führenden Null sondern daran das du mit der For-Schleife einen Textstring zerlegst. In den Variablen steht also der Text "08" nicht die Zahl.
Darum geht die Rechnung mit set /a schief, weil du ja nicht zu einem Text eine Zahl addieren oder Subtrahieren kannst.
miniversum
Darum geht die Rechnung mit set /a schief, weil du ja nicht zu einem Text eine Zahl addieren oder Subtrahieren kannst.
miniversum
Moin eisdiele,
zum Beispiel so ändern:
HTH Biber
Siehe auch mein Batch-Tutorial III (Umgang mit Datums- und Zeitvariablen im Batch..)
zum Beispiel so ändern:
::--------snipp dateSplit.bat
@echo off
REM Datum auslesen
@for /F "tokens=1-3 delims=." %%a in ('date /T') do (
set MYMONAT=1%%b
set MYJAHR=%%c
set MYTAG=1%%a
)
REM echo %myjahr%%mymonat%%mytag%
IF %MYMONAT% LEQ 103 (
set /a MYMONAT = %MYMONAT% + 9
set /a MYJAHR = %MYJAHR% - 1
) else (
set /a MYMONAT = %MYMONAT% - 3
)
Set mymonat=%mymonat:~1,2%
Set mytag=%mytag:~1,2%
Echo Mytag:[%Mytag%] MyMonat [%Mymonat%] MyJahr [%MyJahr%]
REM Output: >datesplit.bat
REM Output: Mytag:[29] MyMonat [05] MyJahr [2006]
:: ---------snapp DateSplit.bat
HTH Biber
Siehe auch mein Batch-Tutorial III (Umgang mit Datums- und Zeitvariablen im Batch..)