Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Rechnen im Batchscript (mit set /a) folgender Fehler erscheint->

Frage Entwicklung Batch & Shell

Mitglied: eisdiele

eisdiele (Level 1) - Jetzt verbinden

29.08.2006, aktualisiert 10:28 Uhr, 7354 Aufrufe, 7 Kommentare

[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
)
Mitglied: hoschen
29.08.2006 um 09:15 Uhr
bei der Berechnung dürfen die Zahlen nicht die "führende" Null haben:

Falsch: set /a MYMONAT = 08 +9

Richtig: set /a MYMONAT = 8 + 9
Bitte warten ..
Mitglied: eisdiele
29.08.2006 um 09:24 Uhr
das Problem ist aber, dass ich die führende null später für robocopy brauche, da robocopy das datum bei einem atribut als YYYYMMDD haben will...
Bitte warten ..
Mitglied: hoschen
29.08.2006 um 09:32 Uhr
dann doch das Ergebnis "MYMONAT" prüfen, wenn 1stellig dann eine 0 davor, wenn zweistellig dann keine 0 davor.
Bitte warten ..
Mitglied: miniversum
29.08.2006 um 09:43 Uhr
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
Bitte warten ..
Mitglied: eisdiele
29.08.2006 um 09:45 Uhr
wie ich die 0 vor der 8 löschen kann weiß ich, allerdings nicht, wie ich sie wieder dort hinbekomme!?
Bitte warten ..
Mitglied: eisdiele
29.08.2006 um 09:56 Uhr
mit: set /a MYMONAT = %MYMONAT:~1% - 3

funktioniert die rechnung aber wunderbar, jetzt muss nur die 0 wieder vor die Ziffer kommen, dann sollte mein script endlich funktionieren...
Bitte warten ..
Mitglied: Biber
29.08.2006 um 10:28 Uhr
Moin eisdiele,

zum Beispiel so ändern:
01.
::--------snipp dateSplit.bat 
02.
@echo off  
03.
REM Datum auslesen 
04.
@for /F "tokens=1-3 delims=." %%a in ('date /T') do ( 
05.
       set MYMONAT=1%%b 
06.
       set MYJAHR=%%c 
07.
       set MYTAG=1%%a 
08.
09.
REM echo %myjahr%%mymonat%%mytag% 
10.
 
11.
IF %MYMONAT% LEQ 103 ( 
12.
       set /a MYMONAT = %MYMONAT% + 9 
13.
       set /a MYJAHR = %MYJAHR% - 1 
14.
) else (  
15.
       set /a MYMONAT = %MYMONAT% - 3 
16.
17.
Set mymonat=%mymonat:~1,2% 
18.
Set mytag=%mytag:~1,2% 
19.
Echo Mytag:[%Mytag%] MyMonat [%Mymonat%] MyJahr [%MyJahr%] 
20.
 
21.
REM Output: >datesplit.bat 
22.
REM Output: Mytag:[29] MyMonat [05] MyJahr [2006] 
23.
:: ---------snapp DateSplit.bat
HTH Biber
Siehe auch mein Batch-Tutorial III (Umgang mit Datums- und Zeitvariablen im Batch..)
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Apache Server
gelöst Fehler beim Import einer DB vom anderen MySQL-Server (2)

Frage von zeroblue2005 zum Thema Apache Server ...

Outlook & Mail
gelöst Outlook 2010 Fehler 0x80004005 von Outlook können kein abonnierten Ordner (4)

Frage von garack zum Thema Outlook & Mail ...

Peripheriegeräte
gelöst USB Stick Formatieren fehler (12)

Frage von Yannosch zum Thema Peripheriegeräte ...

Heiß diskutierte Inhalte
Zusammenarbeit
Als Administrator im Großraumbüro (30)

Frage von Dopamin85 zum Thema Zusammenarbeit ...

Hardware
Laptop ins Salzwasser gefallen (18)

Frage von Marcel94 zum Thema Hardware ...

Hardware
Lenovo Yoga 500 über angeschlossene USB Tastatur booten (13)

Frage von thomasreischer zum Thema Hardware ...

CPU, RAM, Mainboards
Hardware Fragen (12)

Frage von xaver-2 zum Thema CPU, RAM, Mainboards ...