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 In einer Fehler Log Datei die Dateinamen auslesen und diese auf Existenz prüfen

Mitglied: cbli

cbli (Level 1) - Jetzt verbinden

15.10.2007, aktualisiert 26.10.2007, 6102 Aufrufe, 18 Kommentare

Ich möchte mein bestehendes Script erweitern und will aus einer Log Datei, die Fehlermeldungen von Winrar enthält, den Dateinamen auslesen lassen und mir als msgbox anzeigen lassen.
Das Problem ist,daß die Logdatei noch anderen Text enthält und der Dateiname nicht immer in der gleichen Stelle steht.
Lässt sich der Dateiname irgendwie auslesen ?
Wäre es möglich die ganze Logdatei auszulesen und irgendwie mit dem real existierenden Dateinamen zu vergleichen,z.B auf Existenz prüfen ?

Hier der Inhalt der Log Datei:


15.10.2007 12:41:44, Archiv D:\exceltemp\Excel Dateien von Herrn Mustermann.tar

15.10.2007 12:41:44 Lesefehler in der Datei .
15.10.2007 12:41:45 Das Archiv ist zerstört.



Es kann auch vorkommen ,daß die Logdatei mehrere Einträge enthält(siehe oben - diese stehen dann untereinander).
Für ein bißchen Hilfe wäre ich sehr dankbar.


mfg
Claus
Mitglied: bastla
15.10.2007 um 15:43 Uhr
Hallo cbli!

Bitte etwas mehr Info zum Format der einzelnen Zeilen - vor allem:

Gibt es ein Kriterium (etwa, wie in Deinem Beispiel dargestellt, "-------- " am Anfang der Zeile), an dem zu erkennen ist, dass eine Zeile einen Dateinamen enthält, oder:

Steht der Dateiname immer nach ", Archiv " als letzter Eintrag in der Zeile?

Grüße
bastla
Bitte warten ..
Mitglied: cbli
15.10.2007 um 16:42 Uhr
Gibt es ein Kriterium (etwa, wie in Deinem
Beispiel dargestellt, "-------- "
am Anfang der Zeile), an dem zu erkennen ist,
dass eine Zeile einen Dateinamen
enthält, oder:


Sorry, hatte ich vergessen. Hab mal schnell ein größeres Logfile mir angeschaut und genauso ist es
Nach "---------" im LogFile kommt jedesmal der Dateinamen.
Dieser kann Leerzeichen im namen enthalten.

Hier nochmal der genaue Aufbau der Logdatei:
Meine Kommentare setze ich hinters Hochkomma '




' 1. Leerzeile
' 2. Leerzeile
15.10.2007 12:41:44, Archiv D:\exceltemp\Excel Dateien von Herrn Mustermann.tar ' stets gleich (bis auf Datum,Uhrzeiten und Dateinamen)
' Leerzeile
15.10.2007 12:41:44 Lesefehler in der Datei . ' stets gleich (bis auf Datum und Uhrzeit)
15.10.2007 12:41:45 Das Archiv ist zerstört. ' stets gleich (bis auf Datum und Uhrzeit)
' Hier kommt noch eine Leerzeile ,wenn ein 2ter Eintrag im Logfile folgt


Hoffe es ist so verständlich.
Vielen Dank

mfg
Claus
Bitte warten ..
Mitglied: bastla
15.10.2007 um 17:18 Uhr
Hallo cbli!

Da ich nicht weiß, wie eine ev Weiterverarbeitung aussehen soll, zunächst nur die Grundfunktonalität:

01.
Set fso = CreateObject("Scripting.FileSystemObject")
02.
sLogFile = "D:\Log.txt"
03.
Const sCrit1 = "--------"
04.
Const sCrit2 = ", Archiv "
05.
 
06.
'Um die Länge der Suchkriterien nicht bei jedem Schleifendurchlauf
07.
'erneut ermitteln zu müssen, diese gleich hier speichern:
08.
iLenCrit1 = Len(sCrit1)
09.
iLenCrit2 = Len(sCrit2)
10.
 
11.
sResult = ""
12.
Set oLogFile = fso.OpenTextFile(sLogFile, 1)
13.
Do Until oLogFile.AtEndOfStream
14.
	sLine = oLogFile.ReadLine
15.
	If Left(sLine, iLenCrit1) = sCrit1 Then 'Kennung am Zeilenanfang prüfen
16.
		iPos = InStr(1, sLine, sCrit2, vbTextCompare) ' Position der 2. Kennung feststellen
17.
		If iPos Then 'Wenn 2. Kennung gefunden, ...
18.
			sFilePath = Mid(sLine, iPos + iLenCrit2) ' ... den dahinter befindlichen Dateipfad auslesen ...
19.
			If fso.FileExists(sFilePath) Then '... und auf Existenz der Datei prüfen.
20.
				sFileFound = "Datei gefunden:"
21.
			Else
22.
				sFileFound = "Nicht gefunden:"
23.
			End If
24.
			If sResult <> "" Then
25.
				sResult = sResult & vbCrLF & sFileFound & vbTab & sFilePath
26.
			Else
27.
				sResult = sFileFound & vbTab & sFilePath
28.
			End If
29.
		End If
30.
	End If
31.
Loop
32.
oLogFile.Close
33.
WScript.Echo sResult
Grüße
bastla
Bitte warten ..
Mitglied: cbli
15.10.2007 um 19:39 Uhr
Hallo cbli!

Da ich nicht weiß, wie eine ev
Weiterverarbeitung aussehen soll,
zunächst nur die
Grundfunktonalität:

01.
Set fso =
02.
> CreateObject("Scripting.FileSystemObject")
03.
> sLogFile = "D:\Log.txt"
04.
> Const sCrit1 = "--------"
05.
> Const sCrit2 = ", Archiv "
06.
> 
07.
> 'Um die Länge der Suchkriterien
08.
> nicht bei jedem Schleifendurchlauf
09.
> 'erneut ermitteln zu müssen, diese
10.
> gleich hier speichern:
11.
> iLenCrit1 = Len(sCrit1)
12.
> iLenCrit2 = Len(sCrit2)
13.
> 
14.
> sResult = ""
15.
> Set oLogFile = fso.OpenTextFile(sLogFile,
16.
> 1)
17.
> Do Until oLogFile.AtEndOfStream
18.
> 	sLine = oLogFile.ReadLine
19.
> 	If Left(sLine, iLenCrit1) = sCrit1 Then
20.
> 'Kennung am Zeilenanfang prüfen
21.
> 		iPos = InStr(1, sLine, sCrit2,
22.
> vbTextCompare) ' Position der 2. Kennung
23.
> feststellen
24.
> 		If iPos Then 'Wenn 2. Kennung
25.
> gefunden, ...
26.
> 			sFilePath = Mid(sLine, iPos + iLenCrit2)
27.
> ' ... den dahinter befindlichen
28.
> Dateipfad auslesen ...
29.
> 			If fso.FileExists(sFilePath) Then
30.
> '... und auf Existenz der Datei
31.
> prüfen.
32.
> 				sFileFound = "Datei
33.
> gefunden:"
34.
> 			Else
35.
> 				sFileFound = "Nicht
36.
> gefunden:"
37.
> 			End If
38.
> 			If sResult <> "" Then
39.
> 				sResult = sResult & vbCrLF &
40.
> sFileFound & vbTab & sFilePath
41.
> 			Else
42.
> 				sResult = sFileFound & vbTab &
43.
> sFilePath
44.
> 			End If
45.
> 		End If
46.
> 	End If
47.
> Loop
48.
> oLogFile.Close
49.
> WScript.Echo sResult
50.
> 


Habe mir gerade deinen Code angeschaut und dabei kam mir noch eine Idee.
Da ich ja eh noch jede erfolgreiche Winrar Operation in ein logfile schreiben lasse,kam mir der Gedanke einfach beide log Dateien verschmelzen zu lassen.
in die erste Log Datei wird jede mit Winrar entpackte Datei reingeschrieben,erfolgreich oder nicht.
Die Fehler log Datei (von winrar direkt erzeugt) schreibt nur die fehlerhaft entpackten Dateien(Dateinamen) hinein wie ich es schon gepostet habe.
Man könnte doch bestimmt die beiden Log Dateien miteinander vergleichen und wenn ein ,in der Fehler Log Datei stehender Dateiname, gefunden wird,dann einfach in der 1 Log Datei hinter dem Dateinamen das Wort "Fehler" einfügen.

z.B

' von mir erzeugte 1 Log Datei enthält nach Bearbeitung genau 1 Datei (Dateinamen) z.B folgenden Eintrag


Excel Dateien von Herrn Mustermann.tar



' Fehler Log Datei von Winrar sieht so aus wenn Bearbeitung der o.g Datei fehlgeschlagen

15.10.2007 12:41:44, Archiv D:\exceltemp\Excel Dateien von Herrn Mustermann.tar

15.10.2007 12:41:44 Lesefehler in der Datei .
15.10.2007 12:41:45 Das Archiv ist zerstört.

' so soll dann die Log Datei aussehen nach Vergleichen der beiden Log Dateien

Excel Dateien von Herrn Mustermann.tar Fehlerhaft entpackt ' oder ähnlicher Text


Dieses sollte natürlich alles in einer Schleife ablaufen und die bearbeitete Log Datei als msgbox oder mit notepad Aufruf ausgegeben werden.
Die Schleifenfunktion existiert schon und ist voll funktionsfähig,es müsste also "lediglich" der Teil mit dem Log Datei vergleichen und dem Schreiben der neuen Log Datei eingefügt werden.

Hier meine Schleife:

01.
 
02.
strOrdner = "d:\exceltemp"   ' Quellordner
03.
strExtension = "tar"
04.
extensiontarsize ' Wert wird über eine Inputbox definiert
05.
d:\tarfehler.log     ' Log Datei die die Fehler enthält
06.
'strDateiname = ("d:\entpackt.txt")  ' Log Datei die alle entpackten Dateien auflistet,egal mit oder ohne Fehler     weiter unten schon definiert
07.
 
08.
For Each objDatei In objOrdner.Files
09.
   If LCase(Right(objDatei.name, Len(strExtension))) = LCase(strExtension) Then
10.
      if objDatei.size > extensiontarsize then
11.
      wshshell.popup "Folgende Tar Datei wird entpackt "  & vbNewLine & vbNewLine & objDatei.name ,2,"Hinweis"
12.
 
13.
WshShell.Run ("c:\programme\winrar\winrar.exe e -y -v -o+ -ilogd:\tarfehler.log " & strordner & "\"  & objdatei.name & " D:\entpackt\"),,true
14.
 
15.
 
16.
' FileSystemObject objFs oeffnen
17.
Set objFs= CreateObject("Scripting.FileSystemObject")
18.
 
19.
' Dateiname festlegen
20.
strDateiname = ("d:\entpackt.txt")
21.
 
22.
' Einen Textstream (objTextStream) zur Textdatei oeffnen
23.
Set objTextStream = objFs.OpenTextFile(strDateiname,8,True)
24.
 
25.
' Inhalt fuer Datei in String strWriteString speichern:
26.
strWriteString = objDatei.name
27.
 
28.
' String in Datei schreiben:
29.
objTextStream.WriteLine strWriteString
30.
objTextStream.WriteBlankLines(1)
31.
 
32.
' Objekte schliessen
33.
objTextStream.Close
34.
Set objTextStream = Nothing
35.
Set objFs = Nothing
36.
set file = nothing
37.
set fso = nothing
38.
 
Falls etwas fehlen sollte,reiche ich es gerne nach.
Ansonsten vielen Dank schon mal

mfg
Claus
Bitte warten ..
Mitglied: bastla
16.10.2007 um 14:08 Uhr
Hallo cbli!

Um einfacher vergleichen zu können, böte es sich an (und setze ich in meinem unten stehenden Entwurf voraus), auch bei der Erstellung des Gesamtprotokolls den vollen Dateipfad zu verwenden - in Deinem Scriptfragment oben wäre demnach die Zeile
01.
strWriteString = objDatei.name
auf
01.
strWriteString = objDatei.Path
zu ändern.
Die mit
01.
objTextStream.WriteBlankLines(1)
eingefügten Leerzeilen finde ich für die weitere Verarbeitung entbehrlich und würde sie daher weglassen.
Der für Deine zusammengefasste Liste erforderliche Code (aus Zeitgründen nur oberflächlich getestet) könnte etwa so aussehen:
01.
Set fso = CreateObject("Scripting.FileSystemObject")
02.
sLog = "d:\entpackt.txt"
03.
sErrorLog = "d:\tarfehler.log"
04.
sList = "d:\entpackt_komplett.txt"
05.
 
06.
Const sCrit1 = "--------"
07.
Const sCrit2 = ", Archiv "
08.
 
09.
'Um die Länge der Suchkriterien nicht bei jedem Schleifendurchlauf
10.
'erneut ermitteln zu müssen, diese gleich hier speichern:
11.
iLenCrit1 = Len(sCrit1)
12.
iLenCrit2 = Len(sCrit2)
13.
 
14.
Const adVarChar = 200
15.
Const MaxCharacters = 255
16.
Const adFldIsNullable = 32
17.
 
18.
'Datenbank für Dateien und Fehlerhinweise erstellen ...
19.
Set FileList = CreateObject("ADOR.Recordset")
20.
FileList.Fields.Append "Path", adVarChar, MaxCharacters, adFldIsNullable
21.
FileList.Fields.Append "Error", adVarChar, MaxCharacters, adFldIsNullable
22.
FileList.Open
23.
 
24.
' ... und mit dem Inhalt der Logdatei befüllen
25.
Set oLog = fso.OpenTextFile(sLog, 1)
26.
Do Until oLog.AtEndOfStream
27.
	FileList.AddNew
28.
	FileList("Path") = oLog.ReadLine
29.
	FileList.Update
30.
Loop
31.
oLog.Close
32.
 
33.
'Errorlog auslesen und Datenbank um Fehlerhinweise ergänzen
34.
Set oErrorLog = fso.OpenTextFile(sErrorLog, 1)
35.
Do Until oErrorLog.AtEndOfStream
36.
	sLine = oErrorLog.ReadLine
37.
	If Left(sLine, iLenCrit1) = sCrit1 Then 'Kennung am Zeilenanfang prüfen
38.
		iPos = InStr(1, sLine, sCrit2, vbTextCompare) ' Position der 2. Kennung feststellen
39.
		If iPos Then 'Wenn 2. Kennung gefunden, ...
40.
			sFilePath = Mid(sLine, iPos + iLenCrit2) ' ... den dahinter befindlichen Dateipfad auslesen ...
41.
			FileList.Filter = "Path = '" & sFilePath & "'" '... und danach in der Gesamtliste suchen.
42.
			FileList.MoveFirst
43.
			Do Until FileList.EOF 'Wenn die Datei gefunden wird, ...
44.
				FileList("Error") = " ## Fehlerhaft entpackt! ##" '... einen Fehlertext hinzufügen.
45.
				FileList.Update
46.
				FileList.MoveNext
47.
			Loop
48.
			FileList.Filter = ""
49.
		End If
50.
	End If
51.
Loop
52.
oErrorLog.Close
53.
 
54.
'Gesamtliste inkl Fehlerhinweisen in neue Datei ausgeben
55.
Set oList = fso.OpenTextFile(sList, 2, True)
56.
 
57.
FileList.Sort = "Path" 'Sortierung nach Dateipfad
58.
'oder nach fehlerhaften Dateien (werden am Ende der Liste zusammengefasst):
59.
'FileList.Sort = "Error"
60.
FileList.MoveFirst
61.
Do Until FileList.EOF
62.
	oList.WriteLine FileList.Fields.Item("Path") & FileList.Fields.Item("Error")
63.
	FileList.MoveNext
64.
Loop
65.
oList.Close
Um die beiden Dateien abzugleichen, wird eine temporäre Datenbank mit den Dateinamen (bzw -pfaden) aus "d:\entpackt.txt" befüllt und für die auch in "d:\tarfehler.log" enthaltenen Dateien um einen Fehlerhinweis ergänzt. Dabei erleichtert die "Filter"-Methode das Suchen. Zusätzlich lässt sich am Ende sehr leicht eine Sortierung vornehmen.

Falls Du auch die Existenzprüfung noch durchführen willst, lässt sich diese nach der Zeile
01.
sFilePath = Mid(sLine, iPos + iLenCrit2)
integrieren.

Am Ende wird dann der gesamte Datenbankinhalt in eine neue Datei ausgegeben.

Grüße
bastla
Bitte warten ..
Mitglied: cbli
22.10.2007 um 13:40 Uhr
Hallo Bastla

Ich bin leider erst jetzt dazu gekommen, deinen Code in mein Script einzubauen.
Wie immer wenn von dir Hilfe kommt funktioniert sie auch. Unglaublich !!
Vielen Dank erstmal dafür.
Ich hätte aber noch ein paar Fragen:

1. In der entpackt.txt + entpackt_komplett.txt sind ,nach der Verarbeitung, am Anfang 2 Leerzeilen bevor der eigentliche Inhalt anfängt.
Wie kann ich diese automatisch entfernen lassen ?

2. Hätte ich gerne ,daß vor den einzelnen Einträgen in entpackt.txt + entpackt_komplett.txt die Pfadangabe entfernt ist, also der Inhalt
dieser beiden Dateien immer mit dem Dateinamen ohne Pfad anfängt.
Die Pfadangabe brauche ich nicht und sie kann deshalb weggelassen werden.

3. Wie kann ich Dateien mit verschiedenen Dateinamen aber gleichen Dateiendungen in einem Verzeichnis so umbenennen,daß
nur die Dateiendung geändert wird,aber der Dateiname beibehalten wird

z.B:

in einem Verzeichnis sind folgende 2 Dateien (können aber auch 50 oder mehr sein)

test1.txt
lager.txt

Diese sollen mit Hilfe einer Schleife in

test1.doc
lager.doc

umbenannt werden.
Wie mache ich das,den es gibt ja bei VBSCript keine Rename Befehl,was mir völlig unverständlich ist.

Vielen Dank schon mal

mfg
Claus
Bitte warten ..
Mitglied: bastla
22.10.2007 um 14:38 Uhr
Hallo cbli!

1. In der entpackt_komplett.txt sind ,nach der Verarbeitung, am Anfang 2 Leerzeilen bevor der eigentliche Inhalt anfängt. Wie kann ich diese automatisch entfernen lassen ?
Sollte sich mit der unten stehenden Version des Scripts erledigt haben.

2. Hätte ich gerne zwischen den einzelnen Einträgen in entpackt.txt + entpackt_komplett.txt eine Leerzeile stehen, zwecks besserer Übersicht.
Für "entpackt_komplett.txt" bereits unten enthalten, für "entpackt.txt" die Zeile
01.
objTextStream.WriteLine strWriteString & vbCrLF
verwenden. (Anmerkung: Dieses und das nächste Codebeispiel beruht auf dem letzten von Dir geposteten Scriptansatz.)

3. Hätte ich gerne ,daß vor den einzelnen Einträgen in entpackt.txt + entpackt_komplett.txt die Pfadangabe entfernt ist, also der Inhalt dieser beiden Dateien immer mit dem Dateinamen ohne Pfad anfängt. Die Pfadangabe brauche ich nicht und sie kann deshalb weggelassen werden.
Dazu einfach wieder
01.
strWriteString = objDatei.Name
schreiben.

4. Wie kann ich Dateien mit verschiedenen Dateinamen aber gleichen Dateiendungen in einem Verzeichnis so umbenennen,daß nur die Dateiendung geändert wird,aber der Dateiname beibehalten wird
Für die einzelnen "File"-Objekte mit der ".Name"-Eigenschaft ändern, etwa:
01.
Set fso = CreateObject("Scripting.FileSystemObject") 'falls nicht ohnehin schon vorher erstellt
02.
sOrdner = "D:\Temp"
03.
sOldExt = ".txt" 'in Kleinbuchstaben angeben
04.
sNewExt = ".doc"
05.
For Each oFile In fso.GetFolder(sOrdner).Files
06.
	sOldFile = oFile.Name 'Alter Name inkl Extension
07.
	If LCase(Mid(sOldFile, InStrRev(sOldFile, "."))) = sOldExt Then 'Extension isolieren und überprüfen
08.
		sNewFile = Left(sOldFile, InStrRev(sOldFile, ".") - 1) & sNewExt 'neuen Namen erstellen
09.
		If fso.FileExists(sOrdner & "\" & sNewFile) Then fso.DeleteFile(sOrdner & "\" & sNewFile) 'vorhandene Zieldatei löschen
10.
		oFile.Name = sNewFile 'neuen Namen zuweisen (= umbenennen)
11.
	End If
12.
Next
Voraussetzung für das Umbenennen ist, dass die Zieldatei noch nicht existiert. Um dies sicher zu stellen, wird eine ev bereits vorhandene Datei vorweg gelöscht.
Hier noch die (ungetestete) "Leerzeilen"-Version des Scripts:
01.
Set fso = CreateObject("Scripting.FileSystemObject")
02.
sLog = "d:\entpackt.txt"
03.
sErrorLog = "d:\tarfehler.log"
04.
sList = "d:\entpackt_komplett.txt"
05.
 
06.
Const sCrit1 = "--------"
07.
Const sCrit2 = ", Archiv "
08.
 
09.
'Um die Länge der Suchkriterien nicht bei jedem Schleifendurchlauf
10.
'erneut ermitteln zu müssen, diese gleich hier speichern:
11.
iLenCrit1 = Len(sCrit1)
12.
iLenCrit2 = Len(sCrit2)
13.
 
14.
Const adVarChar = 200
15.
Const MaxCharacters = 255
16.
Const adFldIsNullable = 32
17.
 
18.
'Datenbank für Dateien und Fehlerhinweise erstellen ...
19.
Set FileList = CreateObject("ADOR.Recordset")
20.
FileList.Fields.Append "Path", adVarChar, MaxCharacters, adFldIsNullable
21.
FileList.Fields.Append "Error", adVarChar, MaxCharacters, adFldIsNullable
22.
FileList.Open
23.
 
24.
' ... und mit dem Inhalt der Logdatei befüllen
25.
Set oLog = fso.OpenTextFile(sLog, 1)
26.
Do Until oLog.AtEndOfStream
27.
	sLogLine = oLog.ReadLine
28.
	If Trim(sLogLine) <> "" Then
29.
		FileList.AddNew
30.
		FileList("Path") = sLogLine
31.
		FileList.Update
32.
	End If
33.
Loop
34.
oLog.Close
35.
 
36.
'Errorlog auslesen und Datenbank um Fehlerhinweise ergänzen
37.
Set oErrorLog = fso.OpenTextFile(sErrorLog, 1)
38.
Do Until oErrorLog.AtEndOfStream
39.
	sLine = oErrorLog.ReadLine
40.
	If Left(sLine, iLenCrit1) = sCrit1 Then 'Kennung am Zeilenanfang prüfen
41.
		iPos = InStr(1, sLine, sCrit2, vbTextCompare) ' Position der 2. Kennung feststellen
42.
		If iPos Then 'Wenn 2. Kennung gefunden, ...
43.
			sFilePath = Mid(sLine, iPos + iLenCrit2) ' ... den dahinter befindlichen Dateipfad auslesen ...
44.
			sFileName = Mid(sFilePath, InStrRev(sFilePath, "\") + 1) '... auf den Dateinamen reduzieren ...
45.
			FileList.Filter = "Path = '" & sFileName & "'" '... und danach in der Gesamtliste suchen.
46.
			FileList.MoveFirst
47.
			Do Until FileList.EOF 'Wenn die Datei gefunden wird, ...
48.
				FileList("Error") = " ## Fehlerhaft entpackt! ##" '... einen Fehlertext hinzufügen.
49.
				FileList.Update
50.
				FileList.MoveNext
51.
			Loop
52.
			FileList.Filter = ""
53.
		End If
54.
	End If
55.
Loop
56.
oErrorLog.Close
57.
 
58.
'Gesamtliste inkl Fehlerhinweisen in neue Datei ausgeben
59.
Set oList = fso.OpenTextFile(sList, 2, True)
60.
 
61.
FileList.Sort = "Path" 'Sortierung nach Dateipfad
62.
'oder nach fehlerhaften Dateien (werden am Ende der Liste zusammengefasst):
63.
'FileList.Sort = "Error"
64.
FileList.MoveFirst
65.
Do Until FileList.EOF
66.
	oList.WriteLine FileList.Fields.Item("Path") & FileList.Fields.Item("Error") & vbCrLF
67.
	FileList.MoveNext
68.
Loop
69.
oList.Close
Grüße
bastla
Bitte warten ..
Mitglied: cbli
22.10.2007 um 16:36 Uhr
Hallo Bastla

Vielen, vielen Dank.
Jetzt funktioniert die Ausgabe der entpackt_komplett.txt genau so wie ich es will.
Ich traue es mich ja kaum zu fragen,aber wie aufwändig ist es die entpackt_komplett.txt noch zusätzlich als HTML Datei auszugeben ?
Sollte einen tabellarischen Look haben,so daß z.b auch alle Dateien + Fehlermeldungen untereinanderstehen.
Leider habe ich von HTML noch keine Ahnung (soll sich aber ändern).

z.B:

Excel Datei von Herrn Maier Fehler
Txt Datei von Frau Schmidt Fehler

usw...


Vielen Dank

mfg
Claus
Bitte warten ..
Mitglied: bastla
23.10.2007 um 18:02 Uhr
Hallo cbli!

Füge als 5. Zeile
01.
sHTMLList = "d:\entpackt_komplett.html"
ein und ersetze den Teil am Ende (nach "oErrorLog.Close" ) durch
01.
'Gesamtliste inkl Fehlerhinweisen in Text- und HTML-Datei ausgeben
02.
Set oList = fso.OpenTextFile(sList, 2, True)
03.
Set oHTMLList = fso.OpenTextFile(sHTMLList, 2, True)
04.
 
05.
oHTMLList.WriteLine "<HTML><HEAD><TITLE>Datei&uuml;bersicht entpackte Dateien</TITLE></HEAD><BODY>"
06.
oHTMLList.WriteLine "<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=0>"
07.
oHTMLList.WriteLine "<TR><TD WIDTH=450><b>Dateiname</b></TD><TD WIDTH=70><b>Fehler</b></TD></TR>"
08.
 
09.
FileList.Sort = "Path" 'Sortierung nach Dateipfad
10.
'oder nach fehlerhaften Dateien (werden am Ende der Liste zusammengefasst):
11.
'FileList.Sort = "Error"
12.
FileList.MoveFirst
13.
Do Until FileList.EOF
14.
	sDateiName = FileList.Fields.Item("Path")
15.
	sFehler = FileList.Fields.Item("Error")
16.
	oList.WriteLine sDateiName & sFehler & vbCrLF
17.
	If sFehler = "" Then
18.
		sFehler = "&nbsp;"
19.
	Else
20.
		sFehler = "Fehler"
21.
	End If
22.
	oHTMLList.WriteLine "<TR><TD>" & sDateiName & "</TD><TD>" & sFehler & "</TD></TR>"
23.
	FileList.MoveNext
24.
Loop
25.
 
26.
oHTMLList.WriteLine "</TABLE></BODY></HTML>"
27.
oList.Close
28.
oHTMLList.Close
Die Spaltenbreiten 450 und 70 wirst Du vermutlich noch anpassen müssen, und die eher minimalistischen Formatierungen der HTML-Version kannst Du ja hoffentlich bald selbst aufpeppen ...

Grüße
bastla

P.S.: Auch diese Version ist nur sehr oberflächlich getestet.
Bitte warten ..
Mitglied: cbli
23.10.2007 um 19:52 Uhr
Hallo Bastla

Wiederum Dank an dich.
Leider funktioniert die HTML Ausgabe nicht ganz perfekt.
Er setzt immer hinter alle entpackten Dateien die Fehlermeldung,auch wenn sie nachweislich
in Ordnung sind.
In der entpackt_komplett.txt wird noch alles richtig eingetragen.
Ist bestimmt nur eine Kleinigkeit.
Ansonsten reicht mir die Ausgabe in HTML völlig aus.
Einzig noch eine Leerzeile am Anfang der HTML Datei und 1 zwischen den Dateinamen zur besseren Übersicht wäre wünschenswert

Nochmals Dank

mfg
Claus
Bitte warten ..
Mitglied: bastla
23.10.2007 um 20:07 Uhr
Hallo cbli!

... Leerzeile ... zwischen den Dateinamen zur besseren Übersicht ...
Dafür waren eigentlich die Gitternetzlinien gedacht ...

01.
'Gesamtliste inkl Fehlerhinweisen in Text- und HTML-Datei ausgeben
02.
Set oList = fso.OpenTextFile(sList, 2, True)
03.
Set oHTMLList = fso.OpenTextFile(sHTMLList, 2, True)
04.
 
05.
oHTMLList.WriteLine "<HTML><HEAD><TITLE>Datei&uuml;bersicht entpackte Dateien</TITLE></HEAD><BODY>"
06.
oHTMLList.WriteLine "<BR><TABLE BORDER=1 CELLSPACING=0 CELLPADDING=0>"
07.
oHTMLList.WriteLine "<TR><TD WIDTH=450><b>Dateiname</b></TD><TD WIDTH=70><b>Fehler</b></TD></TR>"
08.
 
09.
FileList.Sort = "Path" 'Sortierung nach Dateipfad
10.
'oder nach fehlerhaften Dateien (werden am Ende der Liste zusammengefasst):
11.
'FileList.Sort = "Error"
12.
FileList.MoveFirst
13.
Do Until FileList.EOF
14.
	sDateiName = FileList.Fields.Item("Path")
15.
	sFehler = FileList.Fields.Item("Error")
16.
	oList.WriteLine sDateiName & sFehler & vbCrLF
17.
	If Trim(sFehler) <> "## Fehlerhaft entpackt! ##" Then
18.
		sFehler = "&nbsp;"
19.
	Else
20.
		sFehler = "Fehler"
21.
	End If
22.
	oHTMLList.WriteLine "<TR><TD>" & sDateiName & "<BR>&nbsp;</TD><TD>" & sFehler & "<BR>&nbsp;</TD></TR>"
23.
	FileList.MoveNext
24.
Loop
25.
 
26.
oHTMLList.WriteLine "</TABLE></BODY></HTML>"
27.
oList.Close
28.
oHTMLList.Close
Grüße
bastla
Bitte warten ..
Mitglied: cbli
24.10.2007 um 13:11 Uhr
Hallo Bastla

Leider funktioniert das Ganze nicht so wie es soll.
Jetzt wird hinter allen fehlerfrei entpackten Dateien die Fehlermeldung geschrieben und hinter den fehlerhaften Dateien steht nix.
Müsste genau umgedreht sein.
Könnstest du nochmal drüberschauen bitte ?

Ach ja, wie kann ich beim reinschreiben der Fehlermeldung in die entpackt_komplett.txt diese immer an einer festen Position beginnen lassen, so daß auch die entpackt_komplett.txt einen etwas tabellarischen Eindruck erhält.
Natürlich birgt das die Gefahr,daß bei einem langen Dateinamen etwas überschrieben wird,aber
da bisher eigentlich nie mehr als ca 50 Zeichen für den Dateinamen vorkamen.müsste es ausreichen.

Vielen Dank an dich,weiß gar nicht wie ich das alles hätte alleine schaffen sollen.


mfg
Claus
Bitte warten ..
Mitglied: bastla
24.10.2007 um 14:43 Uhr
Hallo cbli!

Tut mir leid, dass sich das so hinzieht ...
01.
'Gesamtliste inkl Fehlerhinweisen in Text- und HTML-Datei ausgeben
02.
Set oList = fso.OpenTextFile(sList, 2, True)
03.
Set oHTMLList = fso.OpenTextFile(sHTMLList, 2, True)
04.
 
05.
oHTMLList.WriteLine "<HTML><HEAD><TITLE>Datei&uuml;bersicht entpackte Dateien</TITLE></HEAD><BODY>"
06.
oHTMLList.WriteLine "<BR><TABLE BORDER=1 CELLSPACING=0 CELLPADDING=0>"
07.
oHTMLList.WriteLine "<TR><TD WIDTH=450><b>Dateiname</b></TD><TD WIDTH=70><b>Fehler</b></TD></TR>"
08.
 
09.
FileList.Sort = "Path" 'Sortierung nach Dateipfad
10.
'oder nach fehlerhaften Dateien (werden am Ende der Liste zusammengefasst):
11.
'FileList.Sort = "Error"
12.
FileList.MoveFirst
13.
Do Until FileList.EOF
14.
	sDateiName = FileList.Fields.Item("Path")
15.
	sFehler = FileList.Fields.Item("Error")
16.
	oList.WriteLine Left(sDateiName & Space(50), 50) & sFehler & vbCrLF
17.
	If Trim(sFehler) = "## Fehlerhaft entpackt! ##" Then
18.
		sFehler = "&nbsp;"
19.
	Else
20.
		sFehler = "Fehler"
21.
	End If
22.
	oHTMLList.WriteLine "<TR><TD>" & sDateiName & "<BR>&nbsp;</TD><TD>" & sFehler & "<BR>&nbsp;</TD></TR>"
23.
	FileList.MoveNext
24.
Loop
25.
 
26.
oHTMLList.WriteLine "</TABLE></BODY></HTML>"
27.
oList.Close
28.
oHTMLList.Close
Grüße
bastla
Bitte warten ..
Mitglied: cbli
24.10.2007 um 17:11 Uhr
Tut mir leid, dass sich das so hinzieht ...



Hallo Bastla

Entschuldigen musst du dich überhaupt nicht,ich bin mehr als froh das du mir so sehr hilfst.
Leider funktionierts nicht.
Er setzt wieder die Fehlermeldung hinter alle entpackten Dateien bei Ausgabe der Datei in html.
Die Textdatei geht einwandfrei.
Wenn du magst,schau nochmal drüber,ansonsten lass es gut sein und schließ den Thread hier.

Nochmals Dank

mssfg
Claus
Bitte warten ..
Mitglied: bastla
24.10.2007 um 17:44 Uhr
Hallo cbli!

Letzter Versuch:
01.
'Gesamtliste inkl Fehlerhinweisen in Text- und HTML-Datei ausgeben
02.
Set oList = fso.OpenTextFile(sList, 2, True)
03.
Set oHTMLList = fso.OpenTextFile(sHTMLList, 2, True)
04.
 
05.
oHTMLList.WriteLine "<HTML><HEAD><TITLE>Datei&uuml;bersicht entpackte Dateien</TITLE></HEAD><BODY>"
06.
oHTMLList.WriteLine "<BR><TABLE BORDER=1 CELLSPACING=0 CELLPADDING=0>"
07.
oHTMLList.WriteLine "<TR><TD WIDTH=450><b>Dateiname</b></TD><TD WIDTH=70><b>Fehler</b></TD></TR>"
08.
 
09.
FileList.Sort = "Path" 'Sortierung nach Dateipfad
10.
'oder nach fehlerhaften Dateien (werden am Ende der Liste zusammengefasst):
11.
'FileList.Sort = "Error"
12.
FileList.MoveFirst
13.
Do Until FileList.EOF
14.
	sDateiName = FileList.Fields.Item("Path")
15.
	sFehler = FileList.Fields.Item("Error")
16.
	oList.WriteLine Left(sDateiName & Space(50), 50) & sFehler & vbCrLF
17.
	If IsNull(FileList.Fields.Item("Error")) Then
18.
		sFehler = "&nbsp;"
19.
	Else
20.
		sFehler = "Fehler"
21.
	End If
22.
	oHTMLList.WriteLine "<TR><TD>" & sDateiName & "<BR>&nbsp;</TD><TD>" & sFehler & "<BR>&nbsp;</TD></TR>"
23.
	FileList.MoveNext
24.
Loop
25.
 
26.
oHTMLList.WriteLine "</TABLE></BODY></HTML>"
27.
oList.Close
28.
oHTMLList.Close
Grüße
bastla
Bitte warten ..
Mitglied: cbli
24.10.2007 um 19:47 Uhr
Letzter Versuch:


Hallo Bastla

ES Funktioniert ! Perfekt !
Vielen Dank, muchas gracias, mille grazie.

Vielleicht kannst du mir noch bei einem Denkfehler helfen.
Ich habe folgendes Scriptfragment,daß aus einem Verzeichnis die Größen und Anzahl der gefunden xls + doc Dateien (können auch noch mehr Dateiendungen sein, hier aber nur 2) berechnet und ausgibt (Fragment war von dir).
ich möchte nun die Gesamtgröße aller gefunden Dateien erhalten,deren Endung im Array enthalten ist.


z.B:

3 Dateien wurden gefunden

2 x doc = 5 mb ' zusammen 5 mb
1 x xls = 1 mb

gesamt = 6 mb ' Diese Summe will ich erhalten


Nochmals Dank für deine Mühe und Arbeit

mfg
Claus


01.
 
02.
dTypen = Array("xls", "doc")
03.
For Each sTyp In dTypen
04.
 
05.
    iAnz = 0
06.
    lGr = 0
07.
 
08.
    For Each bFile In fso.GetFolder(strordner).Files
09.
        If LCase(fso.GetExtensionName(bFile.Path)) = sTyp then
10.
 
11.
           iAnz = iAnz + 1
12.
           lGr = lGr + bFile.Size
13.
 
14.
end if
15.
    next
16.
 
Bitte warten ..
Mitglied: bastla
24.10.2007 um 20:11 Uhr
Hallo cbli!

Etwa so:
01.
Set fso = CreateObject("Scripting.FileSystemObject")
02.
strOrdner = "D:\Temp"
03.
dTypen = Array("xls", "doc")
04.
iAnz = 0
05.
lGr = 0
06.
For Each sTyp In dTypen
07.
    For Each bFile In fso.GetFolder(strOrdner).Files
08.
        If LCase(fso.GetExtensionName(bFile.Path)) = sTyp Then
09.
           iAnz = iAnz + 1
10.
           lGr = lGr + bFile.Size
11.
	End If
12.
    Next
13.
Next
14.
WScript.Echo CStr(iAnz) & " Dateien mit einer Gesamtgröße von " & CStr(lGr) & " Bytes."
Grüße
bastla
Bitte warten ..
Mitglied: cbli
26.10.2007 um 13:24 Uhr
Hallo Bastla !

Danke für die Hilfe. Hat sehr gut funktioniert.



Danke nochmals

mfg
Claus
Bitte warten ..
Ähnliche Inhalte
Windows Server
Log-Datei via Batch auslesen
gelöst Frage von Ironhead-HaynsWindows Server3 Kommentare

Hallo zusammen, ich drehe mich mal wieder im Kreis und komme durch den Wald vor lauter Bäumen nicht durch! ...

Windows 10

Registry Datei importieren schlägt fehl

Frage von kevischeWindows 102 Kommentare

Liebe Experten, ich habe nach einer frischen Win10 Pro (64bit) Installation ein Backup meiner Registry-Datenbank gemacht. Dann habe ich ...

Windows Server

Powershell - suche nach gelöschter Datei aus LOG

Frage von krischeuWindows Server15 Kommentare

Hi, da bin ich wieder. Ich suchte nach einer Möglichkeit, aus LOG-Dateien zu extrahieren, wo man das Löschen von ...

Netzwerkmanagement

Sophos UTM220 - Appliance CPU Auslastung LOG-Datei downloaden?

gelöst Frage von 1410640014Netzwerkmanagement7 Kommentare

Hallo, würde gerne zu Archivzwecken die CPU-Auslastung einer UTM220 Sophos-Firewall archivieren, finde aber kein LOG-File dazu. Kann zwar die ...

Neue Wissensbeiträge
Humor (lol)
Administrator.de Perlen
Tipp von DerWindowsFreak2 vor 3 TagenHumor (lol)6 Kommentare

Hallo, Heute beim stöbern auf dieser Seite bin auf folgenden Thread aus dem Jahre 2006 gestossen: Was meint ihr? ...

Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 3 TagenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 7 TageniOS5 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 7 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
PCIe 1.0 Grafikkarte für 3840x2160
Frage von Windows10GegnerGrafikkarten & Monitore30 Kommentare

Hallo, mein Vater hat einen neuen Monitor gekauft, welcher eine native Auflösung von 3840*2160 hat. Diese muss jetzt auch ...

Windows Server
Dienstnamen und oder Deutsche und Englische Beschreibung in services.msc gleichzeitig anzeigen
gelöst Frage von vafk18Windows Server23 Kommentare

Guten Morgen, die Suche nach Diensten in services.msc gestaltet sich immer wieder schwierig, weil mir je nach Aufgabe die ...

Windows Server
Kleine Umfrage: Windows Server Desktop oder Core?
Frage von doomfreakWindows Server15 Kommentare

Hey :) Ich wollte mal eine kleine Umfrage hier starten. Ich bin schon etwas länger auf dieser Seite hier ...

JavaScript
Javascript: WebSql
gelöst Frage von internet2107JavaScript15 Kommentare

Guten Morgen zusammen, zunächst einmal einen schönen dritten Advent. Ich habe ein Problem mit Javascript und WebSQL. Bisher habe ...