Batch Druckername aus variable ausfiltern
Hallo zusamen,
habe auf einem Termianlserver mit Hilfe des Befehls "set var=reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" /v Lexmark* alle verbundenen Lexmark Drucker, die in dem genannten Registry-Schlüssel stehen exportiert.
Allerdings steht nun in der Variable nicht nur der Schlüsselname(Druckername) sondern auch der Datentyp und der Wert des Schlüssels. Es interessiert mich allerdings nur der vollständige Druckername mit Hostbezeichung und Sitzungsnummer.
Die Variable sihet folgendermaßen aus:
"
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices
Lexmark Universal PS3 (von PC061) in Sitzung 4 REG_SZ winspool,TS027
Lexmark X850e Kopierraum mitte (von W1091304) in Sitzung 3 REG_SZ winspool,TS022
Lexmark X850e Kopierraum vorne (von W1091304) in Sitzung 3 REG_SZ winspool,TS023
Lexmark X850e Kopierraum hinten (von W1091304) in Sitzung 3 REG_SZ winspool,TS021
Lexmark C782 9901.01.039 (von W1091304) in Sitzung 3 REG_SZ winspool,TS020
Lexmark T650 9901.01.013 (von W1091304) in Sitzung 3(Terminalserver-PostScript-Fallbackdrucker) REG_SZ winspool,TS016
Lexmark T650 Sekretariat S/W (von W1085125) in Sitzung 2(Terminalserver-PostScript-Fallbackdrucker) REG_SZ winspool,TS005
Lexmark C782 Sekretariat Color (von W1085125) in Sitzung 2 REG_SZ winspool,TS015
Lexmark X850e Sekretariat Kopierer (von W1085125) in Sitzung 2 REG_SZ winspool,TS004
Lexmark T652 Sekretariat S/W (von W1085130) in Sitzung 1(Terminalserver-PostScript-Fallbackdrucker) REG_SZ winspool,TS006
Lexmark C782 Sekretariat Color (von W1085130) in Sitzung 1 REG_SZ winspool,TS003
Lexmark X850e Kopierraum vorne (von W1085130) in Sitzung 1 REG_SZ winspool,TS013
Lexmark X850e Sekretariat Kopierer (von W1085130) in Sitzung 1 REG_SZ winspool,TS001
Suchvorgang abgeschlossen: 13 bereinstimmende Zeichenfolge(n) gefunden.
"
Mit welchem Befehl kann ich nur die Druckernamen untereinander ausgeben?
habe auf einem Termianlserver mit Hilfe des Befehls "set var=reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" /v Lexmark* alle verbundenen Lexmark Drucker, die in dem genannten Registry-Schlüssel stehen exportiert.
Allerdings steht nun in der Variable nicht nur der Schlüsselname(Druckername) sondern auch der Datentyp und der Wert des Schlüssels. Es interessiert mich allerdings nur der vollständige Druckername mit Hostbezeichung und Sitzungsnummer.
Die Variable sihet folgendermaßen aus:
"
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices
Lexmark Universal PS3 (von PC061) in Sitzung 4 REG_SZ winspool,TS027
Lexmark X850e Kopierraum mitte (von W1091304) in Sitzung 3 REG_SZ winspool,TS022
Lexmark X850e Kopierraum vorne (von W1091304) in Sitzung 3 REG_SZ winspool,TS023
Lexmark X850e Kopierraum hinten (von W1091304) in Sitzung 3 REG_SZ winspool,TS021
Lexmark C782 9901.01.039 (von W1091304) in Sitzung 3 REG_SZ winspool,TS020
Lexmark T650 9901.01.013 (von W1091304) in Sitzung 3(Terminalserver-PostScript-Fallbackdrucker) REG_SZ winspool,TS016
Lexmark T650 Sekretariat S/W (von W1085125) in Sitzung 2(Terminalserver-PostScript-Fallbackdrucker) REG_SZ winspool,TS005
Lexmark C782 Sekretariat Color (von W1085125) in Sitzung 2 REG_SZ winspool,TS015
Lexmark X850e Sekretariat Kopierer (von W1085125) in Sitzung 2 REG_SZ winspool,TS004
Lexmark T652 Sekretariat S/W (von W1085130) in Sitzung 1(Terminalserver-PostScript-Fallbackdrucker) REG_SZ winspool,TS006
Lexmark C782 Sekretariat Color (von W1085130) in Sitzung 1 REG_SZ winspool,TS003
Lexmark X850e Kopierraum vorne (von W1085130) in Sitzung 1 REG_SZ winspool,TS013
Lexmark X850e Sekretariat Kopierer (von W1085130) in Sitzung 1 REG_SZ winspool,TS001
Suchvorgang abgeschlossen: 13 bereinstimmende Zeichenfolge(n) gefunden.
"
Mit welchem Befehl kann ich nur die Druckernamen untereinander ausgeben?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 162495
Url: https://administrator.de/forum/batch-druckername-aus-variable-ausfiltern-162495.html
Ausgedruckt am: 24.04.2025 um 16:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo fasi2000 und willkommen im Forum!
Kommt auf Deine Definition von "Druckernamen" an ...
[Edit] Hat sich nach genauerem Lesen erledigt ... [/Edit]
Das könnte dann etwa so gehen:
bzw, wenn die Leerzeichen am Anfang nicht stören würden, einfach
Als "delimiter" wird hier ein TAB verwendet ...
Grüße
bastla
Mit welchem Befehl kann ich nur die Druckernamen untereinander ausgeben?
Das könnte dann etwa so gehen:
@echo on & setlocal enabledelayedexpansion
for /f "delims=" %%i in ('reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices" ^| findstr "Lexmark"') do (
set "Drucker="
set "Fertig="
for %%a in (%%i) do if not defined Fertig (
if "%%a"=="REG_SZ" (
set "Fertig=True"
) else (
set "Drucker=!Drucker! %%a"
)
)
echo !Drucker:~1!
)
@echo off & setlocal
for /f "delims= " %%i in ('reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices"^|findstr "HP"') do echo %%i
Grüße
bastla
Hallo fasi2000!
verwenden (und auf jeden Fall darauf achten, dass nach dem zweiten "!" nicht noch ein Leerzeichen in der Batch-Zeile steht).
Da "
Grüße
bastla
Das einzige ist, dass hinter jeder Druckerbezeichnung noch ein Leerzeichen steht.
Ist bei mir nicht so - aber wenn's bei Dir bei jedem Drucker so wäre, könntest Du jaecho !Drucker:~1,-1!
Da "
echo
" eingeschaltet ist, solltest Du außerdem erkennen können, woher diese Leerzeichen stammen ...Wie kann dies gelößt werden?
Wo genau ist das Problem? Der Druckername steht in der Variablen !Drucker! - daher:reg add "HKLM\System\CurrentControlSet\Control\Print\Printers\!Drucker!\PrinterDriverData" /v DuplexCapability /t REG_Binary /d 00
bastla