
42687
08.11.2008, aktualisiert am 09.11.2008
Seitenzahl aus Drucker.log auslesen
Hallo, ich habe hier aus dem Forum eine vbs, die aus dem Ereignisanzeige alle Druckergebnisse ausliest und in eine Datei schreibt. Hier mal die VBS:
strFile = "C:\PrintEvents.log"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System' and " _
& "EventCode = '10'")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(strFile)
objFile.WriteLine "Time:" & vbTab & vbTab & vbTab & vbTab & "Computer:" & vbTab & "User:" & vbTab & vbTab & vbTab & vbTab & "Message:"
For Each objEvent in colLoggedEvents
objFile.WriteLine objEvent.TimeWritten & vbTab & objEvent.ComputerName & vbTab & vbTab & objEvent.User & vbTab & vbTab & objEvent.Message
Next
objFile.Close
Aus dieser Datei soll nun ausgelesen werden, wieviele Seiten gedruckt wurden und auf 2 Drucker verteilt.
Hier mal ein Ausschnitt aus der printevents.log:
Time: Computer: User: Message:
20081107184042.000000+060 PETER PETER\...... Dokument 2, ........... in... im Besitz von ..... wurde über Anschluss USB001 auf EPSON Stylus DX3800 Series gedruckt. Größe in Bytes: 18236; Seiten gedruckt: 2
;
20081102110050.000000+060 PETER PETER\...... Dokument 2, ............. im Besitz von ....... wurde über Anschluss USB001 auf EPSON Stylus DX3800 Series gedruckt. Größe in Bytes: 38532; Seiten gedruckt: 1
daraus soll dann wieder 2 Dateien geschrieben werden, einmal der Farblaser soll in die Farblaser.txt und in die sw-drucker.txt in der datei soll dann nur untereinander stehen, wieviele Seiten auf diesem Drucker gedruckt wurden. BSP.
1
4
2
1
1
2
Ich hab schonmal was vorbereitet:
set file="C:\PrintEvents.log"
for /f "delims" %%a in ('find " Seiten gedruckt: " %file%') do echo %%a>>C:\seiten.txt
Es fehlt noch die unterscheidung in die drucker und das immmer zu viel ausgelesen wird. Ich hoffe ihr könnt mir helfen. bb Peter
strFile = "C:\PrintEvents.log"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'System' and " _
& "EventCode = '10'")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(strFile)
objFile.WriteLine "Time:" & vbTab & vbTab & vbTab & vbTab & "Computer:" & vbTab & "User:" & vbTab & vbTab & vbTab & vbTab & "Message:"
For Each objEvent in colLoggedEvents
objFile.WriteLine objEvent.TimeWritten & vbTab & objEvent.ComputerName & vbTab & vbTab & objEvent.User & vbTab & vbTab & objEvent.Message
Next
objFile.Close
Aus dieser Datei soll nun ausgelesen werden, wieviele Seiten gedruckt wurden und auf 2 Drucker verteilt.
Hier mal ein Ausschnitt aus der printevents.log:
Time: Computer: User: Message:
20081107184042.000000+060 PETER PETER\...... Dokument 2, ........... in... im Besitz von ..... wurde über Anschluss USB001 auf EPSON Stylus DX3800 Series gedruckt. Größe in Bytes: 18236; Seiten gedruckt: 2
;
20081102110050.000000+060 PETER PETER\...... Dokument 2, ............. im Besitz von ....... wurde über Anschluss USB001 auf EPSON Stylus DX3800 Series gedruckt. Größe in Bytes: 38532; Seiten gedruckt: 1
daraus soll dann wieder 2 Dateien geschrieben werden, einmal der Farblaser soll in die Farblaser.txt und in die sw-drucker.txt in der datei soll dann nur untereinander stehen, wieviele Seiten auf diesem Drucker gedruckt wurden. BSP.
1
4
2
1
1
2
Ich hab schonmal was vorbereitet:
set file="C:\PrintEvents.log"
for /f "delims" %%a in ('find " Seiten gedruckt: " %file%') do echo %%a>>C:\seiten.txt
Es fehlt noch die unterscheidung in die drucker und das immmer zu viel ausgelesen wird. Ich hoffe ihr könnt mir helfen. bb Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 101368
Url: https://administrator.de/forum/seitenzahl-aus-drucker-log-auslesen-101368.html
Ausgedruckt am: 22.05.2025 um 14:05 Uhr
7 Kommentare
Neuester Kommentar
Hallo Peter161!
Versuch es damit:
Grüße
bastla
[Edit] Fehlende Anführungszeichen nach %f1% bzw %f2% ergänzt. [/Edit]
Versuch es damit:
@echo off & setlocal
set "file=C:\PrintEvents.log"
set "p1=EPSON Stylus DX3800"
set "f1=Farblaser.txt"
set "p2=SW-Drucker-Name"
set "f2=sw-drucker.txt"
if exist "%f1%" del "%f1%"
if exist "%f2%" del "%f2%"
for /f "tokens=3 delims=:" %%a in ('findstr /i /c:"%p1%" "%file%"') do >>"%f1%" echo %%a
for /f "tokens=3 delims=:" %%a in ('findstr /i /c:"%p2%" "%file%"') do >>"%f2%" echo %%a
bastla
[Edit] Fehlende Anführungszeichen nach %f1% bzw %f2% ergänzt. [/Edit]
Hallo Peter161!
Auf Basis der beiden Beispielzeilen hatte ich die Trennung anhand der enthaltenen ":" vorgenommen - wenn natürlich zusätzliche ":" (wie in einer Pfadangabe) dazwischen kommen, kann das Ergebnis nicht passen ...
Plan B sieht nun so aus:
Hier werden nur die letzten 10 Zeichen der Zeile verwendet, und die Aufteilung erfolgt anhand des Leerzeichens vor der Seitenzahl.
Grüße
bastla
Auf Basis der beiden Beispielzeilen hatte ich die Trennung anhand der enthaltenen ":" vorgenommen - wenn natürlich zusätzliche ":" (wie in einer Pfadangabe) dazwischen kommen, kann das Ergebnis nicht passen ...
Plan B sieht nun so aus:
@echo off & setlocal
set "file=C:\PrintEvents.log"
set "p1=Farblaser"
set "f1=Farblaser.txt"
set "p2=A3-SW-Drucker"
set "f2=sw-drucker.txt"
if exist "%f1%" del "%f1%"
if exist "%f2%" del "%f2%"
for /f "delims=" %%a in ('findstr /i /c:"%p1%" "%file%"') do set "Line=%%a" & call :ProcessLine "%f1%"
for /f "delims=" %%a in ('findstr /i /c:"%p2%" "%file%"') do set "Line=%%a" & call :ProcessLine "%f2%"
goto :eof
:ProcessLine
for /f "tokens=2" %%i in ("%Line:~-10%") do >>%1 echo %%i
Grüße
bastla
Hallo Peter161!
... ansonsten könnte ein Speichern mit dem Typ ".csv" und anschließender Aufruf der Datei(en) mit Calc für den Import sorgen - die Summe müsste dann manuell ergänzt werden.
Grundsätzlich würde ich zwar ebenfalls eine dynamische Summierung (in Calc) vorziehen, allerdings sollten sich die Seitenzahlen ja eigentlich ohnehin nicht mehr ändern, sodass (zur Not
)die Summe auch im Batch berechnet und (statisch) an das Ende der Liste geschrieben und dann (als CSV-File) in Calc importiert werden könnte.
Grüße
bastla
Aber kannst du mir jetzt auch noch sagen wie ich diese Werte per batch nach open office calc importiere und am ende mit Autosumme den gesamtwert ausrechnet.?
Falls es vollautomatisch (also inkl. Autosumme) sein soll, wäre das einen neuen Thread wert ...... ansonsten könnte ein Speichern mit dem Typ ".csv" und anschließender Aufruf der Datei(en) mit Calc für den Import sorgen - die Summe müsste dann manuell ergänzt werden.
Grundsätzlich würde ich zwar ebenfalls eine dynamische Summierung (in Calc) vorziehen, allerdings sollten sich die Seitenzahlen ja eigentlich ohnehin nicht mehr ändern, sodass (zur Not
Grüße
bastla