2016-12-27 2 views
0

Wenn ich die aktuelle Zeit in einer BAT-Datei drucken verwenden wirWie drucke ich die aktuelle Zeit ohne "a.m", "p.m" und ":"?

TIME /T 

aber die Ausgabe ist wie folgt aus:

04:30 a. m. or 14:30 p. m. 

Ich würde gerne wissen, ob es möglich ist, die „zu entfernen: "zwischen den Zahlen und dem a. m./p. m. vom Ende, so auf diese Weise die Ausgabe aussieht:

0430 or 1430 

Ich würde, auch gerne wissen, ob es möglich, dass die Ausgabe oder die Zeit selbst (Zeit/t) zu vergleichen. Wenn es niedriger als X ist, wird eine Aktion ausgelöst. Ich weiß nicht, ob dieser Code korrekt ist, aber so etwas wie dies:

set /a time=TIME /T  
if %time%<=(01:00 a. m.) (GOTO 0am) 
if %time%<=(02:00 a. m.) (GOTO 1am) 
if %time%<=(03:00 a. m.) (GOTO 2am) 
if %time%<=(04:00 a. m.) (GOTO 3am) 
if %time%<=(05:00 a. m.) (GOTO 4am) 
if %time%<=(06:00 a. m.) (GOTO 5am) 
if %time%<=(07:00 a. m.) (GOTO 6am) 
if %time%<=(08:00 a. m.) (GOTO 7am) 
if %time%<=(09:00 a. m.) (GOTO 8am) 
if %time%<=(10:00 a. m.) (GOTO 9am) 
if %time%<=(11:00 a. m.) (GOTO 10am) 
if %time%<=(12:00 a. m.) (GOTO 11am) 
if %time%<=(13:00 a. m.) (GOTO 12am) 
if %time%<=(14:00 a. m.) (GOTO 1pm) 
if %time%<=(15:00 a. m.) (GOTO 2pm) 
if %time%<=(16:00 a. m.) (GOTO 3pm) 
if %time%<=(17:00 a. m.) (GOTO 4pm) 
if %time%<=(18:00 a. m.) (GOTO 5pm) 
if %time%<=(19:00 a. m.) (GOTO 6pm) 
if %time%<=(20:00 a. m.) (GOTO 7pm) 
if %time%<=(21:00 a. m.) (GOTO 8pm) 
if %time%<=(22:00 a. m.) (GOTO 9pm) 
if %time%<=(23:00 a. m.) (GOTO 10pm) 
if %time%<=(24:00 a. m.) (GOTO 11pm) 

Wenn Sie einen einfacheren Weg, wissen dies zu tun, lassen Sie es mich wissen.

Danke für Ihre Zeit.

+0

Es wäre schön, wenn Sie FIRST rtm. Siehe "Hilfesatz" und "Hilfe, wenn" oder besuchen Sie [ss64.com/nt] (http://www.sgt64.com/nt/) – LotPings

Antwort

0

ich zunächst vorschlagen, eine Eingabeaufforderung zu öffnen, set /? und lesen Sie alle Ausgabehilfeseiten laufen. Die letzte Hilfeseite ist über eingebaute Umgebungsvariablen für die Verwendung in Batch-Dateien und natürlich auch über die Kommandozeile, zu der auch DATE und TIME gehört.

Das Format DATE und TIME Strings ist abhängig von Windows-Region und Sprache Einstellungen wie für das Benutzerkonto ausgeführt wird die Batch-Datei mit Hilfe der Umgebungsvariablen definiert DATE und TIME.

Aus diesem Grunde ist es manchmal besser ist, Datum und Uhrzeit-Zeichenfolge in einem Bereich unabhängiges Format zu erhalten, die

mit dem Befehl erreicht werden kann
wmic OS GET LocalDateTime /VALUE 

, die zum Beispiel gibt

LocalDateTime=20161227200325.171000+060 

Das Datum und das Zeit-String-Format kann leicht gesehen werden, wenn man auf diese Zeichenkette schaut.

aus dieser Zeichenfolge Um nur aktuelle Stunde und Minute ohne Doppelpunkt zwischen 24 Stunden-Format mit führenden Nullen für Stunden < 10 und Minuten < 10 der folgende Batch-Code verwendet werden kann:

@echo off 
for /F "tokens=2 delims==." %%I in ('%SystemRoot%\System32\wbem\wmic.exe OS GET LocalDateTime /VALUE') do set "LocalTime=%%I" 
set "LocalTime=%LocalTime:~8,4%" 
echo Local time in format HHMM is: %LocalTime% 
pause 

Der Ausgang von WMIC ist unterteilt in FOR in 3 Strings mit = und . als Trennzeichen wie mit delims==. definiert. Von Interesse für diese Aufgabe ist nur die zweite Zeichenfolge mit Datum und Uhrzeit, die mit tokens=2 referenziert wird, die der Schleifenvariablen I zugewiesen ist. Die Datum/Uhrzeit-Zeichenfolge im internationalen Format wird der Umgebungsvariablen LocalTime zugewiesen.

Die ersten 8 Zeichen sind für das Datum im Format yyyymmdd, das nicht von Interesse ist, sowie die letzten 2 Zeichen, die für die aktuelle Sekunde stehen. Daher werden ab LocalTime nur die 4 Zeichen beginnend mit der Zeichenindexposition 8 neben LocalTime vor der Ausgabe der resultierenden Zeitkette zugewiesen.

Die Ausgabe der Batch-Datei für den gesetzten WMIC Ausgabe lautet:

Local time in format HHMM is: 2003 

für die verwendeten Befehle verstehen und wie sie arbeiten, öffnen Sie eine Eingabeaufforderung, führen Sie dort die folgenden Befehle ein, und lesen Alle Hilfeseiten werden für jeden Befehl sehr sorgfältig angezeigt.

  • echo /?
  • for /?
  • pause /?
  • set /?
  • wmic /?
  • wmic OS /?
  • wmic OS GET /?
0

Um die Zeitformatierung zu erhalten, die Sie suchen, müssen Sie die Batch-Skript-String-Manipulation verwenden. Dies kann in diesem Beispiel Format date and time in a Windows batch script gesehen werden.

Ich glaube, das so etwas wie:

set time=%time:a. m.=% 

a entfernen würde. m. von der Zeit. Der Trick wird sein, das: zu entfernen, da es Teil der Stringmanipulationssyntax ist.

Eine weitere gute Referenz für die Batch-String-Manipulation DOS - String Manipulation

+0

Danke Mann! Es ist möglich, eine Zahl mit ":" dazwischen zu vergleichen? –

+0

Ich glaube nicht. Der beste Ansatz, den ich mir vorstellen kann, besteht darin, "set time =% time :: =%" zu verwenden, nachdem Sie die am pm-Zeichen entfernt haben. – soundslikeodd

Verwandte Themen