Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

TCL - Datum und Uhrzeit auslesen und einer .txt-Datei nach jeder Ausführung zeilenweise übergeben

Mitglied: BlattlausOG

BlattlausOG (Level 1) - Jetzt verbinden

20.05.2014, aktualisiert 21.05.2014, 4367 Aufrufe, 9 Kommentare

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:
01.
set date [clock seconds] 
02.
set date [clock format $date -format {%Y.%m.%d  %T}]
2. Datum und Uhrzeit der Log-Datei .txt übergeben: (Ansatzweise...so....irgendwie...?)
01.
set log [open "../log") w] 
02.
puts $log "[lindex $date]"
Folgendermaßen sollte die Textdatei z.B. aussehen:
01.
2014.05.21 00:25:11   //erste Zeile 
02.
2014.05.19 15:43:32   //zweite Zeile 
03.
2014.05.14 12:23:27   //dritte Zeile 
04.
2014.05.03 06:18:07   //vierte Zeile 
05.
2014.04.25 21:48:22   //fünfte Zeile 
06.
2014.03.18 08:29:31   //sechste Zeile 
07.
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
Mitglied: colinardo
21.05.2014, aktualisiert um 01:26 Uhr
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:
01.
set date [clock seconds] 
02.
set date [clock format $date -format {%Y.%m.%d  %T}] 
03.
set log [open "../log" a+] 
04.
puts $log "$date" 
05.
close $log
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
Bitte warten ..
Mitglied: BlattlausOG
21.05.2014, aktualisiert um 13:16 Uhr
Hallo Uwe,

vielen Dank für deine superschnelle Antwort.

Ich hätte eine weitere Frage.
Wenn ich nun ein Name in dieses bestehende Script übergeben möchte, wie wüsste das dann aussehen?

So...in etwa...?
01.
proc input {} { 
02.
set name "" 
03.
set date [clock seconds] 
04.
set date [clock format $date -format {%Y.%m.%d  %T}] 
05.
set log [open "../log" a+] 
06.
puts $log "$date  | $name" 
07.
close $log 
08.
}

Die log.txt sollte so gegliedert sein:
01.
2014.05.21 00:25:11   |   Bert         //erste Zeile 
02.
2014.05.19 15:43:32   |   Stefan     //zweite Zeile 
03.
2014.05.14 12:23:27   |   Nadine    //dritte Zeile 
04.
2014.05.03 06:18:07   |   Nadine    //vierte Zeile 
05.
2014.04.25 21:48:22   |   Heike      //fünfte Zeile 
06.
2014.03.18 08:29:31   |   Dirk         //sechste Zeile 
07.
u.s.w.
Wäre dies ohne großen Aufwand realisierbar?

Vielen Dank schonmal

Gruß,
Blattlaus
Bitte warten ..
Mitglied: colinardo
21.05.2014, aktualisiert um 13:56 Uhr
also wenn du mit Parameterübergabe meinst, innerhalb eines Scriptes ginge das so:
01.
proc writelog {name} { 
02.
  set date [clock seconds] 
03.
  set date [clock format $date -format {%Y.%m.%d  %T}] 
04.
  set log [open "../log" a+] 
05.
  puts $log "$date | $name" 
06.
  close $log 
07.
}
aufrufen der Prozedur dann so:
writelog "Heike"
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:
01.
proc writelog {name} { 
02.
  set date [clock seconds] 
03.
  set date [clock format $date -format {%Y.%m.%d  %T}] 
04.
  set log [open "./log.txt" a+] 
05.
  puts $log "$date | $name" 
06.
  close $log 
07.
08.
writelog [lindex $argv 0]
und es dann so z.B. in der Bash aufrufen:
tclsh deinscript.tcl "Heike"
http://www.fundza.com/tcl/script_shell/arguments.html

Grüße Uwe
Bitte warten ..
Mitglied: BlattlausOG
21.05.2014, aktualisiert um 15:49 Uhr
Hallo Uwe,

danke für deine Antwort.

Ich habe mich wohl falsch ausgedrückt.

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.

Die im voherigen Post gelistete Text-Datei ist nur, wie ich mir die Ausgabe vorstelle.

Das ist alles

Grüße
Bitte warten ..
Mitglied: colinardo
21.05.2014, aktualisiert um 15:49 Uhr
Zitat von BlattlausOG:
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 ....
Bitte warten ..
Mitglied: BlattlausOG
21.05.2014, aktualisiert um 15:50 Uhr
Alles klar, ich schaue mir das später genauer an...

Danke
Bitte warten ..
Mitglied: BlattlausOG
21.05.2014 um 19:24 Uhr
Hallo Uwe,

ich nochmal *nerv*

Ok, soweit so gut...

Wie würde das Script ausschauen mit folgendem Ablauf:

1. Diesem Script wird eine Uhrzeit über eine Variable übergeben, die Formatierung wie folgt: 19:16:42
2. Das Datum soll vom der PC-Systemzeit ausgelesen werden, die Formatierung wie folgt: 2014.05.21
3. Die bereits erwähnte Namensvariablen werden ebenso dem Script übergeben
4. Nun alles zusammensetzen in folgender Formatierung: 2014.05.21 19:16:42 | Elke
5. Zuguterletzt die zusammengefasste Variable der log.txt übergeben
6. Ebenso bereits erwähnt, bei neuer Übergabe eines Namens aktuellen Zeitstempel setzen und in nächste Zeile anreihen.
Vorherige Zeitstempel unberührt lassen.

Das sollte dann das Endresultat sein.

So Interessant das Thema auch ist, sieht man den Quellcode wird einem so manches verständlicher....vielleicht :p

Grüße
Bitte warten ..
Mitglied: colinardo
21.05.2014, aktualisiert um 19:50 Uhr
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:
01.
proc writelog {name uhrzeit} { 
02.
  # aktuelles Datum in Variable schreiben 
03.
  set date [clock seconds] 
04.
  set date [clock format $date -format {%Y.%m.%d}] 
05.
  # Zeile zusammensetzen 
06.
  set line "$date $uhrzeit | $name" 
07.
  # Logfile im Append-Modus öffnen 
08.
  set log [open "./log.txt" a+] 
09.
  # Zeile in Logfile schreiben 
10.
  puts $log $line 
11.
  # Handle zum Logfile schließen (flush) 
12.
  close $log 
13.
14.
# der writelog-prozedur die zwei Parameter der Kommandozeile übergeben (Name / Uhrzeit) 
15.
writelog [lindex $argv 0] [lindex $argv 1]
Aufruf dann so
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
Bitte warten ..
Mitglied: BlattlausOG
21.05.2014 um 20:29 Uhr
Ok, danke dir für deine tatkräftige Unterstützung.

Werde mich durch den Link kämpfen.

Auf ein ander mal

Grüße
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Datei zeilenweise auslesen - es passiert aber nichts

gelöst Frage von NagusBatch & Shell3 Kommentare

Hi zusammen, ich stehe gerade auf dem Schlauch. Ich will mit einem einfachen Script aus einer text-Datei Dateinamen auslesen ...

VB for Applications

Textdatei zeilenweise nach Datum sortieren

gelöst Frage von GurkenhobelVB for Applications2 Kommentare

Hallo Gemeinde, mehrere umfangreiche Textdateien, in denen zeilenweise wichtige Daten und Termine eingetragen sind, sollen zeilenweise nach dem Datum ...

Batch & Shell

(BATCH:) Zeilenweise Txt auslesen und in eine Variable speichern

gelöst Frage von NincedBatch & Shell20 Kommentare

Hallo Leute, Ich weiß, es ist ein alter Hut, aber ich habe da ein paar Fragen bezüglich der for-Schleife ...

Batch & Shell

Datum in Datei speichern und wieder auslesen

gelöst Frage von AndroxinBatch & Shell3 Kommentare

Moinsen, ich spiele gerade ein wenig mit der Powershell und Zeitstempeln rum: Zeitstempel mit Get-Date erstellen, als String in ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 7 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 16 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...