bat datei time?

3 Antworten

time /t

Zeigt allerdings aus irgendeine bescheuerten Grund nur Stunden und Minuten an...

(Microsoft und völlig chaotische Konzepte ohne jede Konsistenz und inkompatibel zu sich selbst, nix neues...)


qwegf 
Beitragsersteller
 05.03.2022, 10:04

trz thx

0
Dultus, UserMod Light   05.03.2022, 10:13

Man kann auch Systemvariablen benutzen. Windows hat da zum Glück welche zu. :-)

echo %TIME%

gibt dir die Uhrzeit mit Sekunden und die zehnten Millisekunden an. (Wie TIME als Command)

1
Erzesel  06.03.2022, 07:20
Microsoft und völlig chaotische Konzepte ohne jede Konsistenz und inkompatibel zu sich selbst, 

Bei der verwendeten Sprache geht Batch😅. Dessen Konzepte reichen bis zu CP/M aus der Mitte der 70er Jahre zurück.

Die Problematik dieser Sprache lag weniger in Entwicklung seitens der Anbieter. Diese waren eigentlich nur auf Rückwärtskompatibilität bedacht.

Batch war eigentlich nur für das automatische Ausführen von Befehlen/Programmen gedacht. Deshalb der Name Batch ... Stapel.

...ein Stapel von Befehlen...

Die Funktionalität war sehr begrenzt und es gab jede Menge Bugs. Genau diese Bugs machten sich pfiffige Administratoren zu nutze um die Funktionalität zu "erweitern".

Ein Bug der millionenfach genutzt wird ist kein Bug mehr, sondern ein Feature. ...So müssen wohl die Entwickler bei M$ gedacht haben?

...und weil Millionen Batchskripte so funktionierten fixte man die Bugs nie und schleifte sie fast ein halbes Jahrhundert mit... und es kamen viele neue hinzu.

Batch ist ein Flickentepich von Regel, Ausnahmen und Ausnahmen von den Ausnahmen...

Dahingehend ist Batch wahrscheinlich schlimmer als Brainfuck.

(Dein time /T ist kompatibel zum Time aus MSDos und hat genau die kompatible Ausgabe)

Bekommt man aber hin, indem man time ein automatisiertes "Enter" schickt...

echo:| time

...oder die die Variable %time% verwendetet.

Batch liegt (endlich) im Sterben ...

...damit ist die wichtigste Schnittstelle von Batch zu Systemsettings weg... Der Todesstoß für anspruchsvolle BatchScript..

1

das Geheimnis nennt sich %time%...

Eine der Environvariablen.

demo.cmd

@echo off
echo Es ist: %time%
  rem wenn Du nicht alle Stellen benötigst, kannst Du die "substringfunktion" bemühen und  den String aus der Variable zurechtschneiden:
  rem time ab Stelle 0, 5 Zeichen
echo Es ist  %time:~0,5% Uhr
pause

Wenn Logos Dich schon beeindrucken, lass Dir die Zeit ansagen 😎:

Quasseluhr.cmd

@echo off
 rem Umlaute erlauben
chcp 65001>nul
 rem fenstergröße
mode 50,2
title Quasseluhr
set "sayJS=%temp%\say.js"
set "Speed=-1"
set "Volume=100" 
echo s=new ActiveXObject('SAPI.SpVoice');s.Rate=%Speed%;s.Volume=%Volume%;a='';for (i=0;i^<WScript.Arguments.length;i++){a+=WScript.Arguments(i)+' '};s.Speak(a,0)>"%sayJS%"
set talk=cscript //nologo "%sayJS%"
set talkAsync=start "" /b %talk%
::Ende Sprachausgabe einrichten
%talk% Ich bin Deine Quassel-uhr.
%talk% Schön das du mich die Zeit ansagen lässt
:loop
 rem erzeuge Beep...
start "" /b cmd /c echo ax^|choice /c x ^>nul
cls
echo He Meister, beim Piepton war es %time:~0,8% Uhr
 rem sage die Uhrzeit
%talkAsync% He Meister, beim Piepton war es %time:~0,8% Uhr
 rem warte eine Minute (kleine Zeitverschiebungen sind möglich, cls braucht einige Millisekunden und läuft nicht Asynchron)
timeout 60 >nul
goto :loop

Stecke nicht mehr allzuviel Energie in das lernen von Batch.

Microsoft plant gegenwärtig eine wichtige Systemschnittstelle für Batch (wmic) zu entfernen (in der Developerversion bereits geschehen). Damit wird Batch zum zahnlosen Tiger und taugt bestenfalls noch für billige Programmaufrufe...

Ich empfehle Dir den Umstieg auf Powerschell oder C#.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Wie wäre es, wenn du den Code zeigst, wie du es umgesetzt hast?

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting

qwegf 
Beitragsersteller
 05.03.2022, 10:03

habe einf "time" hingeschrieben

0
grrrml  05.03.2022, 10:05
@qwegf

Tippe mal "Time /? " in eine Eingabeaufforderung ein.

0
LUCKY1ONE  05.03.2022, 10:07
@qwegf

Na und? Einfach einen Screenshot machen und der Frage anfügen..

0
Dultus, UserMod Light   05.03.2022, 10:07
@qwegf

Da ist ja mehr bei - aber ja, "time" macht das so. Zur Info - du kannst hinter einem Command /? eingeben, um die Hilfe zu sehen. Dort wird in diesem Falle ausgegeben;

Stellt die Systemzeit oder zeigt sie an.
TIME [/T | Zeit]
TIME ohne Parameter zeigt die aktuelle Systemzeit an und fragt nach der neuen
Uhrzeit. Drücken Sie die EINGABETASTE, um die bisherige Zeit beizubehalten.
Wenn die Befehlserweiterungen aktiviert sind, unterstützt der TIME-Befehl die
/T-Option. Durch diese Option wird dem Befehl mitgeteilt, dass nur die aktuelle
Zeit ausgegeben werden soll, ohne nach einer neuen Zeit zu fragen.

Ergo; TIME /T

Generell würde ich von Batch bei Einsteigern abraten. Nimm mindestens PowerShell, damit kann der Code immerhin verständlich werden und man ist nicht ganz so veraltet unterwegs.

2
Dultus, UserMod Light   05.03.2022, 10:11
@qwegf

Alternativ; was du nicht weißt - Windows hat Systemvariablen wie %USERNAME% für den Nutzernamen. Aber auch %TIME% für die Zeit.

echo %TIME%

10:10:52,90

2
grrrml  05.03.2022, 10:17
@Dultus, UserMod Light

Daran anknüpfen könnte man noch echo %TIME:~,5% oder %TIME:~,8% um den Output leserlicher zu machen.

2
Zahhak  05.03.2022, 10:20
@LUCKY1ONE
Einfach einen Screenshot machen

NEIN! Stifte die Leute hier gefälligst nicht zu so einem Scheißdreck an!

Screenshots von Code sollten hier ganz dingend als Richtlinienverstoß gelten.

Wenn, dann mit der Codeformatierungsfunktion (der Knopf mit "</>") oder aber per pastebin.com oder ähnlichem.

ABER NIEMALS CODE ALS BILD!!!

1