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

gelöst Datum und Uhrzeit von Logfiles auslesen

Mitglied: rabbit00

rabbit00 (Level 1) - Jetzt verbinden

12.04.2008, aktualisiert 19:14 Uhr, 6309 Aufrufe, 2 Kommentare

Ich bin an meinen ersten gehversuchen mit VBS oder Programieren überhaubt und stehe irgendwie auf den Schlauch.

Ich versuche eine einfache Liste zu erstellen. Datum, Uhrzeit, Pfad mit Dateiname. Bloss wie das Leben so spielt, hat eine der ausgelsenen Dateien die Uhrzeit 00:00:00. Was dazu führt, dass in dieser Zeile, die Uhrzeit fehlt. Ich hab mal etwas herrum gegoogelt, aber irgendwie, wird es recht schnell komplex. Ich wäre also Dankbar für eine einfach Antwort, die man ohne Studium versteht. Trozdem sollte natürlich soviel Information enthalten sein, dass ich den Fehler begreiffe und nicht nur weiss, wie ich ihn behebe.



01.
dim liste 
02.
dim Pfad1 
03.
ordner ="Z:\log\" 
04.
 
05.
set fs = createobject("Scripting.FileSystemObject") 
06.
Sub Listordner(ordner) 
07.
Set ordner = fs.getfolder(ordner) 
08.
For Each file In ordner.files 
09.
Pfad1 = file.path 
10.
set logbuch = fs.opentextfile("Z:\inhalt.txt", 8, true,0) 
11.
Set fso = CreateObject("Scripting.FileSystemObject") 
12.
Set f1 = fso.GetFile(Pfad1) 
13.
li = "" 
14.
li = li & f1.DateLastModified & " " & f1.Path & vbcr 
15.
logbuch.writeline li 
16.
logbuch.close 
17.
Next 
18.
End Sub 
19.
Listordner ordner 
20.
msgbox "Fertig", 64 , "Fertig"
Mitglied: bastla
12.04.2008 um 17:16 Uhr
Hallo rabbit00!

In VBS werden Datum und Uhrzeit zusammen gespeichert: das Datum als Tageanzahl vor dem Komma und die Uhrzeit als Bruchteil eines Tages hinter dem Komma - 18:00 wäre zB 0.75. Wenn ein solcher "kombinierter" Wert vor oder hinter dem Komma 0 enthält, wird er nur als Uhrzeit oder nur als Datum interpretiert (wie es bei der einen Datei passiert).

Um auch "00:00:00" auszugeben, kannst Du die entsprechende Formatierungsfunktion verwenden, was in Deinem Script etwa so aussähe:
01.
dt = f1.DateLastModified 
02.
Dat = FormatDateTime(dt, vbShortDate) & " " & FormatDateTime(dt, vbLongTime) 
03.
li = Dat & " " & f1.Path & vbcr
Zu Deinem Entwurf hätte ich noch einige Anmerkungen:
  • Du "splittest" praktisch Dein Hauptprogramm - übersichtlicher wäre:
01.
dim liste 
02.
dim Pfad1 
03.
ordner ="Z:\log\" 
04.
 
05.
Listordner ordner 
06.
msgbox "Fertig", 64 , "Fertig"
  • Das Deklarieren ("dim ...") von Variablen solltest Du konsequent oder gar nicht vornehmen. Wenn Du deklarierst, dann alle Variablen (also auch "ordner", "file", "logbuch" ...) und am besten kombiniert mit einer ersten Zeile "Option Explicit" - damit erreichst Du, dass Dich der Interpreter darauf hinweist, wenn eine nicht deklarierte Variable verwendet werden soll, was einen effektiven Schutz gegen Tippfehler in Variablennamen bringt (wenn Du etwa für die Variable "Pfad1" an anderer Stelle im Script nur "Pfad" schreibst, erhältst Du eine diesbezügliche Fehlermeldung).
  • Es genügt, das "FileSystemObject" nur einmal zu erzeugen - verwenden kannst Du es dann sowohl für Ordner, als auch für Dateien.
  • Der Variablennamen "ordner" steht für den Pfad im Hauptprogramm, als Argument im Unterprogramm und nochmals für das erzeugte "Folder"-Objekt - hier solltest Du besser differenzieren.
  • Das zusätzliche File-Objekt "f1" ist unnötig - Du hast ja aus der Files-Auflistung ohnehin schon jede einzelne Datei in der Schleife als "file" zur Verfügung.
  • Einerseits hast Du (sinnvoller Weise) die Festlegung des zu bearbeitenden Ordners durch eine Variablenzuweisung gleich am Anfang vorgenommen, andererseits den Namen der Ausgabedatei im Unterprogramm "hart codiert" - auch dafür würde sich eine Variable anbieten.
  • Das Öffnen und Schließen der Ausgabedatei innerhalb der Schleife ist aus meiner Sicht unnötig - vor der Schleife, und dann einfach zum Schreiben, öffnen würde schon genügen, und so könntest Du zB auch automatisch bei jedem Durchlauf des Scripts die Ausgabedatei neu erstellen lassen (wobei alternativ ein "Append" natürlich auch hier möglich wäre).
  • Das "Löschen" der Variable "li" passiert automatisch, wenn Du die Ausgabezeile so erzeugst:
01.
li = f1.DateLastModified & " " & f1.Path & vbcr
  • Es lässt sich sicher streiten, ob die zusätzliche Zeilenschaltung (mit "vbCr") besser in der Variablen oder erst beim Schreiben in die Datei untergebracht ist ...
  • Anstelle des wenig aussagekräftigen Wertes "64" in der MsgBox bietet sich die Konstante "vbInformation" an. (Bei "OpenTextFile" schreibe ich allerdings "2", da ich eine Konstante "ForWriting" erst deklarieren müsste und es auch nur drei mögliche Werte gibt, die relativ rasch geläufig werden).
  • Als weiterer Beitrag zur Übersichtlichkeit empfiehlt sich das Einrücken von Codeblöcken (wie zB innerhalb der "For"-Schleife). Im Forum werden für den verwendeten Tab leider anstelle von nur 4 Leerzeichen gleich 8 gesetzt, im Editor sieht's besser aus ...
Unter Berücksichtigung dieser Aspekte würde das Script bei mir etwa so aussehen:
01.
Ordner = "Z:\log\" 
02.
LogDatei = "Z:\inhalt.txt" 
03.
 
04.
Listordner Ordner, LogDatei 
05.
MsgBox "Fertig", vbInformation, "Fertig" 
06.
 
07.
Sub Listordner(OrdnerPfad, DateiPfad) 
08.
Set fso = CreateObject("Scripting.FileSystemObject") 
09.
Set Folder = fso.GetFolder(OrdnerPfad) 
10.
Set Logbuch = fso.OpenTextFile(DateiPfad, 2, True) 
11.
 
12.
For Each File In Folder.Files 
13.
	dt = File.DateLastModified 
14.
	Dat = FormatDateTime(dt, vbShortDate) & " " & FormatDateTime(dt, vbLongTime) 
15.
	Line = Dat & vbTab & File.Path 
16.
	Logbuch.WriteLine Line & vbCrLF 
17.
Next 
18.
 
19.
Logbuch.Close 
20.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: rabbit00
12.04.2008 um 19:14 Uhr
Danke für die ausführliche Antwort, das hilft mir wirklich weiter. Es läuft nun auch, so wie es sollte.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch soll Informationen aus Logfiles auslesen

gelöst Frage von Eichhorn63Batch & Shell8 Kommentare

Hallo, Ich bin neu im Forum und habe folgende Frage: Aus mehreren, jeweils über 1000 Zeilen großen Logfiles sollen ...

Batch & Shell

Datumbezogenes Auslesen von Logfiles

gelöst Frage von tiny.deluxeBatch & Shell2 Kommentare

Hallo zusammen, ich bin neu hier im Forum und habe ein Problem mit einem Batch. Es geht darum ein ...

Batch & Shell

Jüngste Datei suchen und Datum sowie Uhrzeit des letzten Zugriffs auslesen

Frage von HovawartBatch & Shell5 Kommentare

Hallo, habe hier eine Prüfroutine, die den Zeitstempel des letzten Zugriffs einer gegebenen Datenbankdatei mit dem Zeitstempel der letzten/neuesten ...

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
Drucker und Scanner
HP-MF-Drucker per Fax angreifbsr
Information von Lochkartenstanzer vor 1 StundeDrucker und Scanner

Endlich eine sinnvolle Verwendung für Faxe: Damit kann man offensichtlich den Drucker übernehmen. lks

Router & Routing

Das pfSense Buch ist jetzt für jeden kostenlos zu beziehen

Tipp von magicteddy vor 17 StundenRouter & Routing2 Kommentare

Bisher war das Buch nur für zahlende Unterstützer verfügbar, jetzt steht für Jedermann kostenlos zur Verfügung. Siehe auch The ...

Firewall

Möglicherweise neue Sicherheitslücke in Mikrotik-Firmware

Information von LordGurke vor 3 TagenFirewall3 Kommentare

Hallo zusammen, vor ein paar Monaten gab es ja bereits eine Sicherheitslücke in der Firmware von Mikrotik-Routern, über welche ...

Erkennung und -Abwehr
Rechner hacken mit Cortana, auch Remote
Information von Lochkartenstanzer vor 3 TagenErkennung und -Abwehr3 Kommentare

heise berichtet über den Vortrag von der Blackhat Open Sesame: Picking Locks with Cortana. Einige Fehler sind schon gefixt, ...

Heiß diskutierte Inhalte
Windows Netzwerk
Performance bei Terminalserver
Frage von azizalexanderWindows Netzwerk20 Kommentare

Hallo zusammen, Ich wusste nicht in welches Thema meine Frage passt ich Bitte um Vergebung falls ich hier falsch ...

LAN, WAN, Wireless
Bandbreitenverteilung Netzwerk Linux NAS Qnap
Frage von Re-AnimatorLAN, WAN, Wireless18 Kommentare

Hallo Allerseits, ich habe hier im Netzwerk ein Problem mit der Bandbreite für das ich keine Erklärung habe! und ...

Peripheriegeräte
Steckdose(nleiste) mit Schwellwert für off und mit externem Taster
Frage von ahstaxPeripheriegeräte15 Kommentare

Hallo, ich suche eine Steckdose oder Steckdosenleiste mit externem Taster und Schwellwerterkennung. Zu realisieren ist folgendes: Ein PC soll ...

Exchange Server
Exchange 2013 - Unable to Relay nach extern, SuperMailer
Frage von leon123Exchange Server13 Kommentare

Hallo zusammen, ich brauch mal wieder eure Hilfe. Ich beschäftige mich gerade mit dem SuperMailer und erhalte vom Exchange ...