Druckerverwaltung mit Druckerauswahl per Batch
Hallo.
Ich möchte gerne ein Batch-Script erstellen, mit welchem ich die Druckerverwaltung für einen bestimmten Drucker aufrufen kann:
Der DRUCKERNAME soll aus einer Liste der vorhandenen Drucker gewählt werden können.
Die Liste hole ich mir aktuell so:
Als Ergebnis kommt eine Liste in der Art von
Wie bekomme ich es nun so hin, dass ich
a) in der Ausgabe nur den Druckernamen ausgebe und
b) dieser in einer Variable für den späteren Aufruf der rundll32.exe verfügbar habe.
Mein Problem dabei ist, dass ich splitten müsste mit einem "delims= " oder "delims=TAB"?
Ggf. im String das "REG_SZ" durch ein Trennzeichen wie ein Semikolon ersetzen und danach splitten?
Vlt. denke ich zu kompliziert und es gibt eine einfachere Lösung... bin für Vorschäge offen.
Danke,
Jörg
Ich möchte gerne ein Batch-Script erstellen, mit welchem ich die Druckerverwaltung für einen bestimmten Drucker aufrufen kann:
rundll32.exe printui.dll,PrintUIEntry /e /n DRUCKERNAME
Der DRUCKERNAME soll aus einer Liste der vorhandenen Drucker gewählt werden können.
Die Liste hole ich mir aktuell so:
@ECHO OFF
setlocal
set regVar=HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices
set count=1
for /f "tokens=1,2* delims=." %%a in ('Reg Query "%regVar%" /S^| findstr /v "HKEY"') do (
setlocal EnableDelayedExpansion
for %%n in (!count!) do (
ENDLOCAL
set key[%%n]=%%a
echo %%n. %%a
set /a count+=1
)
)
Als Ergebnis kommt eine Liste in der Art von
1. Microsoft XPS Document Writer REG_SZ winspool,Ne02:
2. Microsoft Print to PDF REG_SZ winspool,Ne03:
a) in der Ausgabe nur den Druckernamen ausgebe und
b) dieser in einer Variable für den späteren Aufruf der rundll32.exe verfügbar habe.
Mein Problem dabei ist, dass ich splitten müsste mit einem "delims= " oder "delims=TAB"?
Ggf. im String das "REG_SZ" durch ein Trennzeichen wie ein Semikolon ersetzen und danach splitten?
Vlt. denke ich zu kompliziert und es gibt eine einfachere Lösung... bin für Vorschäge offen.
Danke,
Jörg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 339186
Url: https://administrator.de/contentid/339186
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
5 Kommentare
Neuester Kommentar
oder "delims=TAB"?
Das ist aber schon lange her, dass dort ein Tab Zeichen zu finden war Ggf. im String das "REG_SZ" durch ein Trennzeichen wie ein Semikolon ersetzen
Klar, warum nicht. Bleibt nur noch, die restlichen Leerzeichen am Ende zu eliminieren. Dafür gibt's mehrere Möglichkeiten. bspw.@ECHO OFF
setlocal
set "regVar=HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices"
set count=0
for /f "tokens=*" %%a in ('Reg Query "%regVar%" /S^| findstr /v "HKEY"') do (
set /a count+=1
set "line=%%a"
setlocal EnableDelayedExpansion
for /f "delims=;" %%b in ("!line:REG_SZ=;!") do (
endlocal
call :setvar %%b
)
)
)
setlocal EnableDelayedExpansion
for /l %%i in (1 1 %count%) do echo %%i. "!key[%%i]!"
pause
exit /b
:setvar
set "key[%count%]=%*"
exit /b
rubberman
Hi,
schön, dass es so funktioniert wie du es haben wolltest. Aber nur mal so aus Neugier: Warum würde dir nicht eine Verknüpfung aus
Systemsteuerung > Geräte und Drucker
reichen? Da hast du sogar noch bunte Bildchen dabei
Gruß
schön, dass es so funktioniert wie du es haben wolltest. Aber nur mal so aus Neugier: Warum würde dir nicht eine Verknüpfung aus
Systemsteuerung > Geräte und Drucker
reichen? Da hast du sogar noch bunte Bildchen dabei
Gruß
Hi,
danke für's Feedback.
Die Verknüpfung könntest du IMO auch auf dem Stick mitnehmen, die müsste eigentlich auch überall funktionieren.
Aber egal, du hast was gebastelt und freust dich, das ist doch auch was wert.
Gruß
danke für's Feedback.
Die Verknüpfung könntest du IMO auch auf dem Stick mitnehmen, die müsste eigentlich auch überall funktionieren.
Aber egal, du hast was gebastelt und freust dich, das ist doch auch was wert.
Gruß