Ich schreibe eine große Batchdatei.
Es zeichnet das Datum in einer log.txt-Datei auf:
@echo off
echo %date%, %time% >> log.txt
echo Current date/time is %date%, %time%.
@pause
exit
Es kann es mehrmals auf mehreren Zeilen aufnehmen. Jetzt möchte ich, dass die Stapeldatei das letzte aufgezeichnete Datum/die letzte Uhrzeit aus der Datei log.txt zeigt.
Wie?
hmm .. fand gerade die Antwort. es ist einfacher als ich dachte. Es braucht nur ein paar Sachen mehr:
@echo off
if not exist log.txt GOTO :write
echo Date/Time last login:
type log.txt
del log.txt
:write
echo %date%, %time%. >> log.txt
@pause
exit
Es liest also zuerst die log.txt-Datei und löscht sie. Danach erhalten Sie einfach eine neue Datei (log.txt) mit Datum und Uhrzeit!
Ich hoffe das hilft anderen Leuten!
(Das einzige Problem ist, dass es beim ersten Mal nicht funktioniert. Geben Sie dann einfach einen beliebigen Wert in log.txt ein.) (Dieses Problem ist gelöst und bearbeitet.)
type log.txt
Aber das gibt Ihnen die ganze Datei. Sie könnten es ändern in:
echo %date%, %time% >> log.txt
echo %date%, %time% > log_last.txt
...
type log_last.txt
um nur den letzten zu bekommen.
Verwenden Sie die tail.exe aus dem Windows 2003 Resource Kit
Ein praktisches Zeitstempelformat:
%date:~3,2%/%date:~0,2%/%date:~6,2%-%time:~0,8%
Ok, ich frage mich, wann dies sinnvoll ist, aber hier sind zwei Snipets, die Sie verwenden könnten:
lastlog.cmd
@echo off
for /f "delims=" %%l in (log.txt) do set TimeStamp=%%l
echo %TimeStamp%
Ändern Sie die Zeile "echo ..", aber die letzte Protokollzeit liegt innerhalb von% TimeStamp% . Keine temporären Dateien verwendet, kein Durcheinander und wiederverwendbar, da es sich in einer Variablen befindet.
Wenn Sie dies jedoch IN Ihrem Code und nicht von einem anderen Stapel wissen müssen, ändern Sie Ihre Protokollierung für:
set TimeStamp=%date%, %time%
echo %TimeStamp% >> log.txt
damit die Variable% TimeStamp% später verwendet werden kann, wenn Sie sie benötigen.
Versuchen Sie Folgendes: Verwenden Sie Suchen, um alle Zeilen mit "Aktuelles Datum/Uhrzeit" zu durchlaufen und schreiben Sie jede Zeile in dieselbe Datei:
for /f "usebackq delims==" %i in (`find "Current date" log.txt`) do (echo %i > log-time.txt)
type log-time.txt
Setzen Sie delims = auf ein Zeichen, das in den Datums-/Zeitzeilen nicht relevant ist. Verwenden Sie %% i in Batchdateien.
Erklärung ( Update ):
Find extrahiert alle Zeilen aus log.txt, die die Suchzeichenfolge enthalten.
Für/f durchläuft jede Zeile den Befehl innerhalb (...
).
Da echo> log-time.txt (single>!) Bei jeder Ausführung von log-time.txt überschrieben wird, bleibt nur die letzte übereinstimmende Zeile in log-time.txt
Stellen Sie die Uhrzeit und das Datum einfach auf Variablen ein, wenn sich dann etwas in einer Schleife befindet
:top
set T=%time%
set D=%Date%
echo %T%>>log.txt
echo %d%>>log.txt
echo time:%T%
echo date:%D%
pause
goto top
Ich schlage vor, es schön und sauber zu machen, indem ich:
@echo off
vor jedem Ding wird der Müll C entfernt: C:/Benutzer/Beispiel/...
und setzen
cls
nach dem :top
wird der Bildschirm gelöscht, bevor das neue Datum und die Uhrzeit zur Anzeige hinzugefügt werden
Hier ist eine Version, die nicht fehlschlägt, wenn log.txt
fehlt:
@echo off
if not exist log.txt goto firstlogin
echo Date/Time last login:
type log.txt
goto end
:firstlogin
echo No last login found.
:end
echo %date%, %time%. > log.txt
pause
Hier ist ein guter Datums- und Zeitcode:
@echo off
if %date:~4,2%==01 set month=January
if %date:~4,2%==02 set month=February
if %date:~4,2%==03 set month=March
if %date:~4,2%==04 set month=April
if %date:~4,2%==05 set month=May
if %date:~4,2%==06 set month=June
if %date:~4,2%==07 set month=July
if %date:~4,2%==08 set month=August
if %date:~4,2%==09 set month=September
if %date:~4,2%==10 set month=October
if %date:~4,2%==11 set month=November
if %date:~4,2%==12 set month=December
if %date:~0,3%==Mon set day=Monday
if %date:~0,3%==Tue set day=Tuesday
if %date:~0,3%==Wed set day=Wednesday
if %date:~0,3%==Thu set day=Thursday
if %date:~0,3%==Fri set day=Friday
if %date:~0,3%==Sat set day=Saturday
if %date:~0,3%==Sun set day=Sunday
echo.
echo The Date is %day%, %month% %date:~7,2%, %date:~10,4% the current time is: %time:~0,5%
pause
Ausgänge: Das Datum ist Sonntag, der 27. September 2009, die aktuelle Uhrzeit ist 3:07
@echo off
set log=%time% %date%
echo %log%
Dies ist ein Stapel, um Datum und Uhrzeit als temporäre Variable zu speichern und anzuzeigen. In einer Hast habe ich keine Zeit, ein Skript zum Öffnen eines Textes zu schreiben, vielleicht später.