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, 7357 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 ..
Heiß diskutierte Inhalte
Router & Routing
Tipps für Router (ca. 100 clients, VPN) (18)

Frage von oel-auge zum Thema Router & Routing ...

TK-Netze & Geräte
gelöst Convert von TAPI auf CAPI gesucht (13)

Frage von StefanKittel zum Thema TK-Netze & Geräte ...