115129
20.05.2014, aktualisiert am 21.05.2014
8844
9
0
TCL - Datum und Uhrzeit auslesen und einer .txt-Datei nach jeder Ausführung zeilenweise übergeben
Hallo Community,
ich möchte per TCL-Script die Uhrzeit und das Datum des Systems auslesen und einer Textdatei übergeben.
Dabei soll nach jeder Ausführung des Scripts das aktuelle Datum und die aktuelle Uhrzeit in die nächste untere Zeile geschrieben werden,
wobei die bereits vorhandenen Zeilen bestehen bleiben sollen.
1. Datum und Uhrzeit des Systems auslesen:
2. Datum und Uhrzeit der Log-Datei .txt übergeben: (Ansatzweise...so....irgendwie...?)
Folgendermaßen sollte die Textdatei z.B. aussehen:
Wie Ihr sicherlich bemerkt habt, hab ich davon so gut wie keine Ahnung und hoffe auf tatkräftige Unterstützung
Besten Dank für Eure Antworten.
Grüße,
Blattlaus
ich möchte per TCL-Script die Uhrzeit und das Datum des Systems auslesen und einer Textdatei übergeben.
Dabei soll nach jeder Ausführung des Scripts das aktuelle Datum und die aktuelle Uhrzeit in die nächste untere Zeile geschrieben werden,
wobei die bereits vorhandenen Zeilen bestehen bleiben sollen.
1. Datum und Uhrzeit des Systems auslesen:
set date [clock seconds]
set date [clock format $date -format {%Y.%m.%d %T}]
2. Datum und Uhrzeit der Log-Datei .txt übergeben: (Ansatzweise...so....irgendwie...?)
set log [open "../log") w]
puts $log "[lindex $date]"
Folgendermaßen sollte die Textdatei z.B. aussehen:
2014.05.21 00:25:11 //erste Zeile
2014.05.19 15:43:32 //zweite Zeile
2014.05.14 12:23:27 //dritte Zeile
2014.05.03 06:18:07 //vierte Zeile
2014.04.25 21:48:22 //fünfte Zeile
2014.03.18 08:29:31 //sechste Zeile
u.s.w.
Wie Ihr sicherlich bemerkt habt, hab ich davon so gut wie keine Ahnung und hoffe auf tatkräftige Unterstützung
Besten Dank für Eure Antworten.
Grüße,
Blattlaus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 238655
Url: https://administrator.de/contentid/238655
Ausgedruckt am: 28.03.2024 um 20:03 Uhr
9 Kommentare
Neuester Kommentar
Hallo Blatlaus,
ich muss gestehen das ich mit TCL noch nie Kontakt hatte, aber da man ja sein Leben lang neues ausprobieren sollte und mir "Programmieren" kein Fremdwort ist , hab ich mal schnell in die Doku geschaut und folgendes ist dabei rausgekommen, du warst schon ganz dicht dran mit deinem Code, nur der Parameter für den Filezugriff war hier nicht ganz optimal für dein Vorhaben:
Das a+ bedeutet: Wenn die Datei nicht existiert, erstelle sie, ansonsten öffne das File und setze die Schreibposition ans Ende der Datei.
Also jedes mal wenn du ein File so öffnest, wird alles was du danach ins File schreibst, immer ans Ende dran gehängt.
http://www.tcl.tk/man/tcl8.5/tutorial/Tcl24.htm
Grüße Uwe
ich muss gestehen das ich mit TCL noch nie Kontakt hatte, aber da man ja sein Leben lang neues ausprobieren sollte und mir "Programmieren" kein Fremdwort ist , hab ich mal schnell in die Doku geschaut und folgendes ist dabei rausgekommen, du warst schon ganz dicht dran mit deinem Code, nur der Parameter für den Filezugriff war hier nicht ganz optimal für dein Vorhaben:
set date [clock seconds]
set date [clock format $date -format {%Y.%m.%d %T}]
set log [open "../log" a+]
puts $log "$date"
close $log
Also jedes mal wenn du ein File so öffnest, wird alles was du danach ins File schreibst, immer ans Ende dran gehängt.
http://www.tcl.tk/man/tcl8.5/tutorial/Tcl24.htm
Grüße Uwe
also wenn du mit Parameterübergabe meinst, innerhalb eines Scriptes ginge das so:
aufrufen der Prozedur dann so:
http://www.tcl.tk/man/tcl8.5/tutorial/Tcl11.html
Wenn du stattdessen die Argumente schon in der Bash Kommandozeile übergeben willst kannst du das Script so schreiben:
und es dann so z.B. in der Bash aufrufen:
http://www.fundza.com/tcl/script_shell/arguments.html
Grüße Uwe
proc writelog {name} {
set date [clock seconds]
set date [clock format $date -format {%Y.%m.%d %T}]
set log [open "../log" a+]
puts $log "$date | $name"
close $log
}
writelog "Heike"
Wenn du stattdessen die Argumente schon in der Bash Kommandozeile übergeben willst kannst du das Script so schreiben:
proc writelog {name} {
set date [clock seconds]
set date [clock format $date -format {%Y.%m.%d %T}]
set log [open "./log.txt" a+]
puts $log "$date | $name"
close $log
}
writelog [lindex $argv 0]
tclsh deinscript.tcl "Heike"
Grüße Uwe
Zitat von @115129:
Ein Name wird dem Script übergeben, das Script soll den Namen mit der davorgestellten Systemzeit speichern.
Wird irgendwann ein neuer oder gar der gleiche Name übergeben (variabler Name), soll dasselbe geschehen allerdings in eine
neue Zeile.
Das ist alles
aber das tut genau das zweite Script von oben ....Ein Name wird dem Script übergeben, das Script soll den Namen mit der davorgestellten Systemzeit speichern.
Wird irgendwann ein neuer oder gar der gleiche Name übergeben (variabler Name), soll dasselbe geschehen allerdings in eine
neue Zeile.
Das ist alles
Es wäre mal gut zu wissen, wie du das mit der Übergabe der Parameter an das Script meinst, bzw, auf welchem OS du arbeitest. Meinst du die Übergabe der Parameter an die Funktion im Script selber, oder eine Übergabe von Parametern von der Kommandozeile an ein Script was als Datei gespeichert ist ??? Willst du mehrere Namen gleichzeitig an das Script übergeben ??
so wie ich das verstanden habe:
Aufruf dann so
Mit diesem Tutorial sollte das kein Problem mehr darstellen: http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html
Die nötigen Fetzen habe ich dir ja geliefert, damit solltest du das umsetzen können. Das hier ist ja kein Hausaufgaben-Lösen Forum.
Wenn ich das gestern in 10 Minuten Lesen im Tutorial auf dem Smartphone hier schaffe (hatte vorher sonst noch nie was mit TCL gemacht!!) sollte das für dich eigentlich mit etwas Lesen eine Lösbare Aufgabe darstellen.
Viel Erfolg
Grüße Uwe
so wie ich das verstanden habe:
proc writelog {name uhrzeit} {
# aktuelles Datum in Variable schreiben
set date [clock seconds]
set date [clock format $date -format {%Y.%m.%d}]
# Zeile zusammensetzen
set line "$date $uhrzeit | $name"
# Logfile im Append-Modus öffnen
set log [open "./log.txt" a+]
# Zeile in Logfile schreiben
puts $log $line
# Handle zum Logfile schließen (flush)
close $log
}
# der writelog-prozedur die zwei Parameter der Kommandozeile übergeben (Name / Uhrzeit)
writelog [lindex $argv 0] [lindex $argv 1]
tclsh deinscript.tcl "Elke" "10:00:00"
Mit diesem Tutorial sollte das kein Problem mehr darstellen: http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html
Die nötigen Fetzen habe ich dir ja geliefert, damit solltest du das umsetzen können. Das hier ist ja kein Hausaufgaben-Lösen Forum.
Wenn ich das gestern in 10 Minuten Lesen im Tutorial auf dem Smartphone hier schaffe (hatte vorher sonst noch nie was mit TCL gemacht!!) sollte das für dich eigentlich mit etwas Lesen eine Lösbare Aufgabe darstellen.
Viel Erfolg
Grüße Uwe