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 parsen einer Ausgabe (Drucker auslesen)

Mitglied: jschneider

jschneider (Level 1) - Jetzt verbinden

30.10.2007, aktualisiert 21:27 Uhr, 6041 Aufrufe, 8 Kommentare

Hallo

ich mal wieder

ich möchte die aktuellen Drucker eines Benutzers auslesen und entsprechend formatiert weiterverarbeiten

das nehm ich zum auslesen
01.
reg  query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" >> c:\temp\drucker\drucker.log
die ausgabe hierzu sieht dann so aus

01.
 
02.
Listing of [Software\Microsoft\Windows NT\CurrentVersion\\Devices] 
03.
 
04.
REG_SZ   	\\vshqprt01\GND0783-HPLJ4000-PS	winspool,Ne00: 
05.
REG_SZ   	\\vshqprt01\GND0783-HPLJ4000-PCL	winspool,Ne01: 
06.
REG_SZ   	\\[Public]\GND0783_HPLJ4000N	winspool,Ne02:



wenn ich die drucker.log mit folgendem code parse

01.
For /f "tokens=4-5 delims=\ " %%a in (c:\temp\drucker\drucker.log) do ( 
02.
@echo %%a  >> %logfile%)
funktioniert das nicht danz sauber, da mir anstatt:

\\vshqprt01\Drucker0783-HPLJ4000-PS
\\vshqprt01\Farbdrucker0784-HPLJ4000-PCL
\\[Public]\Drucker0785_HPLJ4000N


folgende ausgabe gegeben wird:

Microsoft
Drucker0783-HPLJ4000-PS winspool,Ne00:
FarbdruckerDrucker0784-HPLJ4000-PCL winspool,Ne01:
Drucker0785_HPLJ4000N winspool,Ne02:


hülfe

Mitglied: bastla
30.10.2007 um 14:42 Uhr
Hallo jschneider!

Wie wäre es einfach mit
01.
for /f "tokens=2" %%a in (c:\temp\drucker\drucker.log) do @echo %%a  >> %logfile%
Abgesehen davon lässt sich das besser testen, wenn die (erwünschten bzw unerwünschten) Ergebnisse sich aus dem angegebenen Beispiel ableiten lassen - mein Ergebnis sieht nämlich so aus:
01.
\\vshqprt01\GND0783-HPLJ4000-PS 
02.
\\vshqprt01\GND0783-HPLJ4000-PCL 
03.
\\[Public]\GND0783_HPLJ4000N
Grüße
bastla
Bitte warten ..
Mitglied: jschneider
30.10.2007 um 14:47 Uhr
hi bastla - du schon wieder


einen fehler hab ich drin in meinem posting

ich möchte nicht

\\vshqprt01\GND0783-HPLJ4000-PS

sondern

GND0783-HPLJ4000-PS

raushaben
Bitte warten ..
Mitglied: bastla
30.10.2007 um 15:09 Uhr
Hallo jschneider!

Dann machen wir's halt so (und eliminieren gleich auch die Überschriftszeile, aus welcher das - natürlich nur in diesem Zusammenhang unerwünschte - "Microsoft" stammte):
01.
for /f "tokens=4 delims=\ " %%i in ('findstr "REG_SZ" c:\temp\drucker\drucker.log') do @for /f %%a in ('echo %%i') do @echo %%a
Der Grund, warum bei Deinem Ansatz "winspool,Ne00:" nicht abgeschnitten wurde, liegt im Trennzeichen "Tab" - daher ließe sich das Ganze noch kürzer so schreiben:
01.
for /f "tokens=3 delims=\	 " %%a in ('findstr "REG_SZ" c:\temp\drucker\drucker.log') do @echo %%a
wobei nach "delims=" neben "\" und dem Leerzeichen auch ein Tab-Zeichen eingegeben werden muss. In der ersten Version oben enthält die zweite Zerlegung mit "for" keine "delims"-Angabe, wodurch automatisch Leerzeichen und Tab als Trennzeichen verwendet werden.

Grüße
bastla

P.S.:
hi bastla - du schon wieder
Na ja, ich komm' gelegentlich hier vorbei ...
Bitte warten ..
Mitglied: Biber
30.10.2007 um 20:01 Uhr
Einspruch, Euer Ehren,

das reicht so nicht mit einer FOR-Anweisung.
Und ich bekomme es auch nicht als Oneliner (ohne call-Block) hin.

Bei der Ausgabe von reg.exe 3.0 (bei XP) werden Netzwerkdrucker und z.B. PDF-Drucker aufgelistet.

Echt-Ausgabe von Reg.exe 3.0; nur Server/Druckernamen verallgemeinert:
01.
 
02.
! REG.EXE VERSION 3.0 
03.
 
04.
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices 
05.
    PDF-ConverterPro    REG_SZ  winspool,Ne00: 
06.
    Microsoft XPS Document Writer       REG_SZ  winspool,Ne01: 
07.
    \\xxxxxxxxxxx001\xxxxxxxxxxx001     REG_SZ  winspool,Ne02: 
08.
    \\yyyyyyyyyyy001\yyyyyyyyyyy010     REG_SZ  winspool,Ne03: 
09.
    \\aaaaaaaaaa015\aaaaaaabiblub       REG_SZ  winspool,Ne04: 
10.
    \\bbbbbbbbb955\bbbbG834 - PeterPanzer       REG_SZ  winspool,Ne05: 
11.
    \\cccccccc0003.xxx.yy.biz\uuuuuuuuu016      REG_SZ  winspool,Ne06: 
12.
    \\dddddddd0011.xxx.yy.biz\vvvvvvvvv501-PCL  REG_SZ  winspool,Ne07: 
13.
    \\eeeeeeeee005\eeeee130     REG_SZ  winspool,Ne08: 
14.
    \\zzzzzzzzzzl3\HP Color LaserJet 5500 PCL6  REG_SZ  winspool,Ne10: 
15.
    \\zzzzzzzzzzl3\PLW021_HP1055CM      REG_SZ  winspool,Ne11: 
16.
 
Alle Druckerzeilen beginnen mit 5 leading spaces.
Und ich sehe keinen anderen Weg, als erst die Zeile mit den TABs zu trennen.
Dann ist der Drucker = Token 1 entweder etwas wie
01.
[    PDF-ConverterPro    ] 
02.
[    Microsoft XPS Document Writer       ] 
03.
...-oder- 
04.
[    \\zzzzzzzzzzl3\HP Color LaserJet 5500 PCL6  ]
Wenn ich die sauber trennen will, egal ob "\" enthalten oder nicht, brauche ich mehr als eine Zeile.
Und die leading blanks (die stehen bleiben, wenn kein "\" im Token1 vorkommt), bekomme ich nur über einen "call:" weg.

Die Reg-Ausgabe von oben ist gefaked..*gg

01.
:: ------snipp DispPrinternames.bat 
02.
@echo off & Setlocal  
03.
Set Key="HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" 
04.
:: delims in der nächsten Zeile ist ein TAB 
05.
@for /f "skip=4 delims=	" %%i in ('reg  query %key%') do @(  
06.
  For /f "delims=\ tokens=1-3" %%a in ("%%i") do @( 
07.
    if [%%b]==[] (call :disp %%a )else echo %%c 
08.
)) 
09.
Goto :eof 
10.
:disp  
11.
@echo %* 
12.
:: ------snapp DispPrinternames.bat
Ausgabe damit as should do:
01.
PDF-ConverterPro 
02.
Microsoft XPS Document Writer 
03.
..... 
04.
HP Color LaserJet 5500 PCL6 
05.
PLW021_HP1055CM
Gruß
Biber
Bitte warten ..
Mitglied: bastla
30.10.2007 um 20:26 Uhr
@Biber
... as should do ...
Bei mir war's nur ein works as designed ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
30.10.2007 um 21:00 Uhr
... und übrigens: Einspruch gegen den Einspruch (bzw gegen den "Fake"-Vorwurf):

Die "COMPMGMT_REGISTRY_reg.exe" aus den "Windows NT 4.0 Resource Kit Support Tools" (sp4rk_i386.exe, Version 4.71.0819.0) etwa liefert tatsächlich das dargestellte Format.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
30.10.2007 um 21:07 Uhr
OMG, bastla,

warst du vorhin bei eBay oder auf einem Garagen-Flohmarkt oder wo hast Du dieses Schätzchen noch aufgetrieben...?

Okay, okay, ich ziehe den Fake-Vorwurf reumütig zurück. Einspruch stattgegeben.

Und ich sage auch nichts zu M$s PraktikantInnen, die ausgerechnet bei den paar nützlichen Batch-Befehlen wie Reg.exe uder Shutdown.exe oder Date/t von Version zu Version die Eingabe- und Ausgabeformate ändern....

Schönen Abend Dir...
Biber
Bitte warten ..
Mitglied: bastla
30.10.2007 um 21:27 Uhr
Hallo Biber!

Ich hatte mich ja auch über das Format der "reg"-Ausgabe gewundert, da mein erster Ansatz natürlich auch ohne die "Temp"-Datei auskommen sollte ...

Da ich nun leider nicht über Deine Erfahrung und detaillierte Kenntnis der diversen MS-Hervorbringungen verfüge (aber ganz gerne mal etwas für schlechte Zeiten zurücklege - etwa alle Sysinternals-Tools in der letzten Version der "Vor-MS-Ära" ) hat es dann doch etwas gedauert, bis ich das Teil ausgegraben hatte - ist übrigens gar nicht sooo alt (Dateidatum 20.04.1998).

Im übrigen ist natürlich Deine Zerlegung viel sauberer, da mein Ansatz nur für die im Beispiel angeführten Netzwerkdrucker zuverlässig funktioniert, daher sollte es dann folgende Version mit der "historischen reg.exe" tun:
01.
@echo off & setlocal 
02.
set Key="HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" 
03.
:: delims in der nächsten Zeile ist ein TAB 
04.
for /f "skip=3 tokens=2 delims=	" %%i in ('reg query %Key%') do (  
05.
  for /f "tokens=1-2 delims=\" %%a in ("%%i") do ( 
06.
    if [%%b]==[] (echo %%a) else echo %%b 
07.
08.
)
Auch Dir einen schönen Abend
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Parsen mehrer Dateien und Ausgabe je einer Zeile

Frage von grkaBatch & Shell1 Kommentar

Hallo ich habe eine sehr lange Liste mit vielen Dateien, die alle einen doxygen Kommentar in dieser Form am ...

Windows Vista

Powershellscript zum Auslesen von Druckern

gelöst Frage von ghammerWindows Vista16 Kommentare

Hallo, Dömane: Server 2012 Clients Vista, Windows 7 Ich hab hier ein Powershellscript erstellt das mir die Drucker auf ...

Sonstige Systeme

Software zum Parsen von Emails und PDFs

Frage von Zero01Sonstige Systeme12 Kommentare

Hallo, ich suche für die Firma bei der ich zur Zeit arbeite eine Software mit der man Emails und ...

Batch & Shell

Ini file powershell parse

gelöst Frage von kotb92Batch & Shell3 Kommentare

Hallo zusammen, Ich habe ein paar solche 'ini' Dateien die ich mit Powershell in eine csv Datei parsen möchte. ...

Neue Wissensbeiträge
Windows Netzwerk

CGM Praxisarchiv funktioniert auf Clients nach Update auf 4.14 nicht mehr

Tipp von MOS6581 vor 10 StundenWindows Netzwerk

Moin, ein Kunde setzt das CGM-Praxisarchiv ein. Mehrplatzinstallation mit SQL-Server. Nachdem letzte Woche auf die 4.14 aktualisiert wurde, funktionierte ...

Windows 10

Win 10 - Storage Sense - neues herstellerseitiges Cleaning-Tool statt cleanmgr

Tipp von mathu vor 17 StundenWindows 101 Kommentar

Vermutlich ab dem Oktoberrelease wird eine neue Speicherbereinigungssuftware ausgeliefert von Microsoft. Cleanmgr.exe soll angeblich aber noch weiter parallel verfügbar ...

E-Mail
Neueste Masche der Bad Guys: Offene Erpressung
Information von the-buccaneer vor 1 TagE-Mail15 Kommentare

"Warum den komplizierten Weg über einen Kryptotrojaner nehmen, wenn man die Leute auch direkt erpressen kann?" haben sich wohl ...

Viren und Trojaner
Neues ct-desinfect 2018 erschienen
Information von Lochkartenstanzer vor 1 TagViren und Trojaner1 Kommentar

Moin, heise hat eine neues Sonderheft Desinfect veröffentlicht (9,90€/12,90€) . Falls jemand öfter mal Kisten "säubern" muß ist das ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Kombiniere mehrere 4G Router zu einem Netzwerk - Anwendung kleine LAN (10-20 Leute)
Frage von HulkTheHeroLAN, WAN, Wireless22 Kommentare

Guten Mittag liebes Administrator - Fourm, ich hoffe ich habe das richtige Thema ausgewählt - ansonsten bitte gerne verschieben ...

Firewall
Blocken illegaler Film-Streams
gelöst Frage von CoreknabeFirewall20 Kommentare

Moin Wissende, unsere kleine Hochschule möchte gern das illegale Streaming von Kinofilmen und Serien unterbinden. Wir sperren bisher alle ...

Windows Server
2012 R2 Server Keine Anmeldung möglich Meldung: Laut den Sicherheitsrichtlinien auf diesem PC sollen informationen zur letzten interaktiven Anmeldung angezeigt werden
Frage von Speedy18A4Windows Server19 Kommentare

Hallo, ich habe vor einigen Wochen einen zweiten Domain Controller zu meiner Domain hinzugefügt. Funktionierte alles wunderbar. Auch die ...

iOS
Virus auf iphone
Frage von jensgebkeniOS17 Kommentare

hallo gemeinschaft, habe einen virus auf meinem iphone es kommen zwei meldungsfenster 1. online-2018-software-free.win 2. wpform.com - please click ...