Rechnen in Dos-Box (CMD)

639 Aufrufe
Gefragt 1, Dez 2017 in Windows 7 von Gdave
Hallo

Wie kann ich im Dos-Fenster folgendes rechnen lassen. Ich möchte einfach das Resultat erhalten:

Aktuelle Stunde (Uhrzeit)+Aktueller Tag (Datum, 2-stellig)+Aktueller Monat (Datum)  -> ergibt eine Zahl.
Das ganze geteilt durch 1000  -> ergibt das Resultat.

Beispiel:
100112 geteilt durch 1000 = 100.112

10=Uhrzeit
01=Datum
12=Monat

Kann mir jemand helfen?

MFG
Gdave

11 Antworten

0 Punkte
Beantwortet 1, Dez 2017 von Busmaster
Hallo Gdave

schau mal hier:
[url]https://www.administrator.de/wissen/rechnen-batch-125284.html[/url]

Mit einer Batch kann man rechnen +-*\ aber offenbar nur mit ganzen Zahlen.

Falls es um Rechnungen mit Datumsangaben geht (gestern, morgen):
[url]https://www.experts-exchange.com/articles/10774/Advanced-Batch-File-Programming-YESTERDAY-BAT.html
[/url]
[url]https://znil.net/index.php?title=Windows:Batch_/_DOS-Box:_aktuelles_Datum_und_Uhrzeit_f%C3%BCr_Datei-_oder_Verzeichnisnamen_verwenden
[/url]
[url]https://de.wikibooks.org/wiki/Batch-Programmierung:_Programmierungshilfen#Datum_und_Uhrzeit_anzeigen
[/url]

Das wird dann irgendwann kompliziert, weil Zahlen, die mit 0 beginnen als Oktalzahlen interpretiert werden und Tag/Monat "08" und "09" nicht gehen.
0 Punkte
Beantwortet 1, Dez 2017 von cmdschieber
Hallo, ja da ging mal was, aber man musste einiges vorbereiten, Variablen setzen und so weiter.
Oft liefen unter DOS irgendwelche Steuerungsprogramme, wo man einfache Rechenaufgaben mitlaufen konnte.
Lasse mal nach "cmd datum rechnen", "batch datum rechnen" suchen.

Gruß
0 Punkte
Beantwortet 1, Dez 2017 von Gdave
Vielen Dank

Das ist für mich zu kompliziert.
Kann jemand mein Beispiel von oben in eine Batch-Datei programmieren?

MFG
Gdave
0 Punkte
Beantwortet 7, Dez 2017 von Gdave
Hallo

Das ist für mich zu kompliziert.
Kann jemand mein Beispiel von oben in eine Batch-Datei programmieren?

Oder ist das zu kompliziert?

MFG
Gdave
+1 Punkt
Beantwortet 13, Dez 2017 von Busmaster
Hallo GDave,

da das Thema nochmal hoch kam:
Unten ist ein Lösungsvorschlag, der einen STRING der gewünschten Form erzeugt.
- Das Betriebssystem muss das Datum in der Form dd.mm.yyyy liefern.
- Das Ergebnis wird in die Datei Ergebnis.txt im gleichen Verzeichnis geschrieben.
- Zeilen, die mit "echo" beginnen können entfernt werden.

Gruss
Busmaster

[code]
@echo off
rem Wie kann ich mit Basic folgendes rechnen lassen. Ich möchte einfach das Resultat erhalten:
rem Aktuelle Stunde (Uhrzeit)+Aktueller Tag (Datum, 2-stellig)+Aktueller Monat (Datum) -> ergibt eine Zahl.
rem Das ganze geteilt durch 1000 -> ergibt das Resultat.
rem Beispiel:
rem 100112 geteilt durch 1000 = 100.112
rem 10=Uhrzeit
rem 01=Datum
rem 12=Monat
rem Das Resultat möchte ich dann in einer Batch-Datei ausgeben.

rem Vorschlag von Busmaster 2017-12-13
rem Zahl ist hhmmdd
rem entweder 6 stellig hhmmdd: 10mmdd...23mmdd > 100000, letzte Stellen 01...31, d.h. es gibt IMMER 3 Nachkommastellen
rem oder     5 stellig _hmmdd:  0mmdd... 9mmdd < 100000, letzte Stellen 01...31, d.h. es gibt IMMER 3 Nachkommastellen

rem Datumskonvention ist : dd.mm.yyyy

set mydate=%date%
set mytime=%time%

rem dd ist Tag 01...09
set dd=%mydate:~0,2%
rem mm ist Monat 01...12
set mm=%mydate:~3,2%

rem hh ist Uhrzeit: 0...1...23: offenbar OHNE führende Null für 1 bis 9 Uhr
set hh=%mytime:~0,2%
echo Tag   : %dd%
echo Monat : %mm%
echo Stunde: %hh%

rem s0=hhmmdd (5 oder 6 stellig)
set s0=%hh%%dd%%mm%

rem https://sites.google.com/site/batchprogrammierung/befehle/how-to---einleitung/stringmanipulation
rem s1: String s0 ohne die letzten 3 Stellen
set /a s1=%s0:~0,-3%

rem s2: die letzten 3 Stellen von s0
set /a s2=%s0:~-3%

echo String %s0%\1000 (Int: %s1%), (frac: %s2%)

set sout=%s1%.%s2%
echo Ergebnis %sout%
rem Das Ergebnis ist ein String!!

echo %sout% > Ergebnis.txt

pause

[/code]
0 Punkte
Beantwortet 13, Dez 2017 von die_auch
Die auch?:

echo %sout% > Ergebnis.txt

:D
+1 Punkt
Beantwortet 13, Dez 2017 von Busmaster
Kleine Korrektur/Ergänzung:

Kommt drauf an was mit dem Ergebnis gemacht werden soll.

Beispiel:
In einem CMD Fenster die Batch work1.bat starten.
Work1bat  ruft time1.bat auf (time1 ist eine Kurzfassung ohne echo).
Das Ergebnis steht - aber nur solange das CMD Fenster geöffnet ist - in der Umgebungsvariablen sout für andere batches zur Verfügung.

Soll das Ergebnis durch andere Programme oder nach Schleßen des CMD-Fensters verwendet werden, kann der aktuelle Wert von sout mit echo in eine Datei geschrieben werden.

Text work1.bat[code]
@echo off
rem Batch work1.bat

call time1.bat

echo Ergebnis ist %sout%
[/code]
Text time1.bat[code]
@echo off
rem Batch time1.bat
rem Vorschlag von Busmaster 2017-12-13 - Kurzfassung ohne Ausgabe
rem Datumskonvention ist : dd.mm.yyyy

set mydate=%date%
set mytime=%time%

rem dd ist Tag 01...09
set dd=%mydate:~0,2%
rem mm ist Monat 01...12
set mm=%mydate:~3,2%

rem hh ist Uhrzeit: 0...1...23: offenbar OHNE führende Null für 1 bis 9 Uhr
set hh=%mytime:~0,2%

rem s0=hhmmdd (5 oder 6 stellig)
set s0=%hh%%dd%%mm%

rem https://sites.google.com/site/batchprogrammierung/befehle/how-to---einleitung/stringmanipulation
rem s1: String s0 ohne die letzten 3 Stellen
set /a s1=%s0:~0,-3%

rem s2: die letzten 3 Stellen von s0
set /a s2=%s0:~-3%

set sout=%s1%.%s2%

[/code]
0 Punkte
Beantwortet 13, Dez 2017 von Gdave
Hallo

Vielen Dank Busmaster :)
So etwas habe ich gesucht.

Habe versucht den Wert 1000 (Division) durch einen Anderen Wert (1111) zu ersetzen hat aber nicht funktioniert.
Gibt es für das auch eine Lösung?

Vielen Dank nochmals.

Gruss
Gdave
0 Punkte
Beantwortet 13, Dez 2017 von Busmaster
Hallo Gdave

siehe Antwort 1:
Rechnen in Batch geht meines Wissens nur mit ganzen Zahlen (vielleicht weiss jemand mehr)

Gruss
Busmaster
0 Punkte
Beantwortet 5 Jan von Gdave
Vielen Dank jetzt funktioniert alles wie gewünscht.

Gruss
Gdave
...