Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Freigabenamen und Ports der installierten Drucker per batch auslesen

Frage Entwicklung Batch & Shell

Mitglied: tillixx07

tillixx07 (Level 1) - Jetzt verbinden

23.02.2011 um 14:18 Uhr, 11961 Aufrufe, 22 Kommentare

Hallo zusammen!

Ich möchte zwecks Inventarisierung auf meinem Printserver (win2003r2) die installierten Drucker auf folgende Werte hin auslesen: Name, Freigabename und Anschluss.

nach langer Suche und Probieren bin ich bis hier her gekommen:

Unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers finden sich alle gewünschten Informationen.

Mit:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Share Name" >> C:\drucker1.txt
kann ich die Freigabenamen, mit:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Name" >> C:\drucker2.txt
den Namen, mit
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Port" >> C:\drucker3.txt
den Anschluss in die jeweilige Datei schreiben.

Ich möchte aber mehrere Werte eines Schlüssels gleichzeitig auslesen und in EINE Datei schreiben

https://www.administrator.de/index.php?content=40726 hat mir nicht mehr weiter geholfen, genauso habe ich die Hilfe zu "reg query" erschöpft.

Ich bin daher über über Eure Hilfe dankbar.

Viele Grüße
tillixx
Mitglied: pieh-ejdsch
23.02.2011 um 14:41 Uhr
moin tillixx,

sollen die Daten in der Txt eine bestimmte Formatierung/Sortierung besitzten? ZB. nach Drucker sortiert.

Gruß Phil
Bitte warten ..
Mitglied: tillixx07
23.02.2011 um 14:50 Uhr
Hi Phil,

die Sortierung sollte nach Druckername erfolgen.

ZB.:
Drucker1 [freigabename] [port]
Drucker2 [freigabename] [port]

usw.

Aber das funktioniert bei dem o.g. Batch in gewisser Weise, da der Schlüssel wie der jeweilige Drucker heißt:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Drucker1

Grüße
t.
Bitte warten ..
Mitglied: pieh-ejdsch
23.02.2011 um 15:39 Uhr
das müsste dann in etwa so gehen:
01.
@echo off&setlocal 
02.
set "Datei=C:\Drucker.txt" 
03.
04.
for /f "delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Name"^|findstr "\\"') do @for /f "tokens=3*" %%j in ('reg query "%%i" /v "Share Name"^|findstr /v "\\"') do @for /f "tokens=2*" %%l in ('reg query "%%i" /v "Port"^|findstr /v "\\"') do @echo %%~ni [%%k] [%%m] 
05.
)>"%Datei%"
Gruß Phil
Bitte warten ..
Mitglied: tillixx07
23.02.2011 um 16:07 Uhr
Vielen Dank,

allerdings bricht das Skript ab, ohne die Einträge auszulesen. Leider sind meine "Kenntnisse" hierzu recht bescheiden, um zu sagen, woran es liegt.
Bitte warten ..
Mitglied: pieh-ejdsch
23.02.2011 um 16:27 Uhr
probier es nochmal mit dem ausgemerzten Fehler. Ich hatte ein > Zeichen zuviel vor der FORschleife.

Gruß Phil
Bitte warten ..
Mitglied: tillixx07
23.02.2011 um 16:34 Uhr
leider nein. Ich habe mal "pause" nach zeile 2 und 5 eingefügt, die erste funktioniert noch, die 2. nicht mehr.
Bitte warten ..
Mitglied: pieh-ejdsch
23.02.2011 um 16:55 Uhr
da war noch ein Leerzeichen vor dem Dateiname. Jetzt sollte es gehen.

Gruß Phil
Bitte warten ..
Mitglied: tillixx07
23.02.2011 um 17:04 Uhr
das LZ hatte ich schon entfernt, das ist es auch nicht.
Bitte warten ..
Mitglied: Friemler
23.02.2011 um 18:10 Uhr
Hallo tillixx07,

der gute Phil hat ein wenig zu viel optimiert, das war alles. Die Ausgabe von geschachtelten FOR-Schleifen mit einem Rutsch in eine Datei umleiten (Zeile 5) funktioniert aus irgendwelchen Gründen nicht (Grüße an den Praktikanten, der die CMD-Shell programmiert hat ). Nimm folgende Abwandlung des Codes:

01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
set "Datei=C:\Drucker.txt" 
06.
 
07.
type NUL > "%Datei%" 
08.
 
09.
for /f "delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Name" ^| findstr "\\"') do ( 
10.
  for /f "tokens=3*" %%j in ('reg query "%%i" /v "Share Name" ^| findstr /v "\\"') do ( 
11.
    for /f "tokens=2*" %%l in ('reg query "%%i" /v "Port" ^| findstr /v "\\"') do ( 
12.
      >>"%Datei%" echo %%~ni [%%k] [%%m] 
13.
14.
15.
)
Gruß
Friemler
Bitte warten ..
Mitglied: tillixx07
23.02.2011 um 18:49 Uhr
Grandios!!

Herzlichen Dank Euch beiden und einen schönen Abend!

grüße
tillixx
Bitte warten ..
Mitglied: pieh-ejdsch
23.02.2011 um 19:31 Uhr
moin Friemler,

das ist ja Verwunderlich ich hatte erst die kommplette forschleife im cmd Fenster mit korrekter Ausgabe gehabt und dann in die Batch Übertragen.
Bei mir hatte die Batch dann aber die Ausgabe auch ins File eingetragen.

solche Eigenheiten - das es mal hier funtioniert und woanders nicht ist ja auch komisch.

Gruß Phil
Bitte warten ..
Mitglied: Friemler
23.02.2011 um 20:08 Uhr
Hi Phil,

vielleicht liegt es ja an der Betriebssystemversion, da gibt es schon kleine Unterschiede zwischen CMD unter XP und Windows 7. Ich benutze Windows 7 Ultimate N 32Bit mit frisch installiertem SP1.

[EDIT]
Es liegt nicht an der Betriebssystemversion, sondern am unterschiedlichen Verhalten von CMD bei Ausführung eines Befehls von der Kommandozeile oder aus einem Batchfile heraus.
[/EDIT]

Gruß
Friemler
Bitte warten ..
Mitglied: pieh-ejdsch
23.02.2011 um 20:17 Uhr
naja ich benutze auch ein Win 7 Ultimate 32 Bit - mit allen derzeit zur Verfügung stehenden Patches.

Also immer Up to Date.

Wofür steht denn das "N"? (Nicht für alles geeignet oder Eingeschränkte Funtionstüchtigkeit)

obwohl ich auch manchmal beim Übermässigen Testen von Scripten oder nur so in der CMD bei Unerwarteten Ausgaben einen Neustart machen muss, damit die CMD wieder so tut wie sie soll.

Gruß Phil
Bitte warten ..
Mitglied: Friemler
23.02.2011 um 20:21 Uhr
Hi Phil,

die Versionen mit dem N enthalten keinen Mediaplayer. Der Windows-Leistungsindex ist deshalb auch nicht benutzbar. Es gibt aber ein spezielles Pack von MS für die N-Versionen zum nachinstallieren.

Woran es lag habe ich in einem EDIT zu meinem obigen Kommentar gepostet.

Gruß
Friemler
Bitte warten ..
Mitglied: tillixx07
24.02.2011 um 10:25 Uhr
Guten Morgen,

ich möchte noch mein finales Skript posten. Es werden der Name, der Anschluss, der Freigabename, die Beschreibung und der Name des Druckertreibers in eine csv Datei ausgegeben (getrennt durch Semikolon).

Nochmals danke für die Hilfe
tillixx


01.
@echo off 
02.
setlocal  
03.
set "Datei=J:\Drucker.csv"  
04.
type NUL > "%Datei%"  
05.
for /f "delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Name" ^| findstr "\\"') do (  
06.
  for /f "tokens=2*" %%j in ('reg query "%%i" /v "Port" ^| findstr /v "\\"') do (  
07.
    for /f "tokens=3*" %%l in ('reg query "%%i" /v "Share Name" ^| findstr /v "\\"') do ( 
08.
      for /f "tokens=2*" %%n in ('reg query "%%i" /v "Description" ^| findstr /v "\\"') do ( 
09.
       for /f "tokens=2*" %%p in ('reg query "%%i" /v "Location" ^| findstr /v "\\"') do ( 
10.
        for /f "tokens=3*" %%r in ('reg query "%%i" /v "Printer Driver" ^| findstr /v "\\"') do ( 
11.
      >>"%Datei%" echo %%~ni;%%k;%%m;%%o;%%q;%%s 
12.
13.
14.
15.
    )  
16.
  )  
17.
)
Bitte warten ..
Mitglied: desbo84
24.03.2011 um 17:45 Uhr
Moin Moin,


ich brauche auch genau so ein Script. Nur benötige ich auch noch den Treiber.
Habe jetzt erst einmal das Script testen wollen. Leider bekomme ich nur eine leere Datei. Bei beiden Versionen txt und csv.
Arbeite mit Xp SP3.

Schönen Gruß

Dennis
Bitte warten ..
Mitglied: pieh-ejdsch
25.03.2011 um 11:08 Uhr
moin desbo84,

sollte eigentlich etwas drin stehen...

Was bringt Dir denn das Script für eine Ausgabe in die CMD-Line, wenn Du die die Umleitung aus der Zeile 11 entfernst und nur
echo %%~ni;%%k;%%m;%%o;%%q;%%s
stattdessen stehen hast.

was gibt Dir diese Zeile in der CMD-Line abgefeuert aus?
01.
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s /v "Name"
Gruß Phil
Bitte warten ..
Mitglied: desbo84
25.03.2011 um 11:41 Uhr
Moin Phil,


also zu 1. "Fehler zu viele Befehlszeilenparameter"

2. Gleiche Meldung wie 1.

Gruß

Desbo
Bitte warten ..
Mitglied: tillixx07
25.03.2011 um 14:01 Uhr
Hallo Desbo,

lass mich raten: Du führst das Script unter WinXP aus?

Grüße
t.
Bitte warten ..
Mitglied: desbo84
25.03.2011 um 14:57 Uhr
jap hatte ich ja oben geschrieben xp sp3...

muss ich etwas ändern?

xp muss bleiben hehe
Bitte warten ..
Mitglied: tillixx07
25.03.2011 um 15:14 Uhr
überlesen, sorry

Bei mir kommt unter WinXP SP3 der selbe Fehler.
Bitte warten ..
Mitglied: pieh-ejdsch
01.04.2011 um 00:48 Uhr
moin,

Patchday ist aber erst in einer Woche ...
XP will die Schalter /v und /s im reg Befehl nicht kombinieren KA warum.

die Verschalchtelten Forschleifen werden auch durcheinandergebracht und die Reg ausgabe ist auch anders

Patch for XP and Win7 - positiv getestet
01.
@echo off 
02.
setlocal 
03.
set "Datei=C:\Drucker.csv"  
04.
 
05.
06.
for /f "delims=" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" /s ^|findstr /b /c:"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers" 2^>nul') do ( 
07.
	for /f "tokens=2*" %%j in ('reg query "%%i" /v  "Name"		 2^>nul ^| findstr "REG_" 2^>nul') do (       set "PNAME=%%k" 
08.
		for /f "tokens=2*" %%l in ('reg query "%%i" /v  "Port"		 2^>nul ^| findstr "REG_" 2^>nul') do set "PPort=%%m" 
09.
		for /f "tokens=3*" %%l in ('reg query "%%i" /v  "Share Name"	 2^>nul ^| findstr "REG_" 2^>nul') do set "PShareName=%%m" 
10.
		for /f "tokens=2*" %%l in ('reg query "%%i" /v  "Description"	 2^>nul ^| findstr "REG_" 2^>nul') do set "PDescription=%%m" 
11.
		for /f "tokens=2*" %%l in ('reg query "%%i" /v  "Location"	 2^>nul ^| findstr "REG_" 2^>nul') do set "PLocation=%%m" 
12.
		for /f "tokens=3*" %%l in ('reg query "%%i" /v  "Printer Driver" 2^>nul ^| findstr "REG_" 2^>nul') do set "PPrinterDriver=%%m" 
13.
		setlocal enabledelayedexpansion 
14.
		echo !PNAME!;!PPort!;!PShareName!;!PDescription!;!PLocation!;!PPrinterDriver! 
15.
		>&3 echo !PNAME!;!PPort!;!PShareName!;!PDescription!;!PLocation!;!PPrinterDriver! 
16.
		endlocal 
17.
)	) 
18.
) 3>"%Datei%" 
19.
 
20.
 
21.
notepad "%Datei%" 
22.
pause
Gruß Phil
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Windows Systemdateien
gelöst Registry-Schlüssel per Batch auslesen und in Datei schreiben (9)

Frage von Philzip zum Thema Windows Systemdateien ...

Batch & Shell
Per Skript lokal angeschlossene USB Drucker auslesen (7)

Frage von pixel0815 zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (12)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...