wake-up-neo.net

Anzeigen von Text aus der TXT-Datei in der Batchdatei

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?

14
Deniz Zoeteman

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.)

5
Deniz Zoeteman
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.

26
viraptor

Verwenden Sie die tail.exe aus dem Windows 2003 Resource Kit

3
SqlACID

Ein praktisches Zeitstempelformat:

%date:~3,2%/%date:~0,2%/%date:~6,2%-%time:~0,8%
1
Cyril

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.

1
Jay

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

1
devio

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

1
graml

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
1
Anders Sandvig

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

0
BnryZombie
@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.

0
Daniel Isaksen