chillaholic
Goto Top

Lokalen Drucker als Standarddrucker verwenden

Hallo,

ich suche ein Batch Script dass erkennt, ob ein lokaler Drucker über USB oder LPT angeschlossen ist und ihn falls dem so ist als Standartdrucker auswählt,
da vermehrt fälschlicherweise ein Netzwerkdrucker als Standartdrucker verwendet wird.

Als Ansatz hab ich schonmal den Befehl fürs setzen des Standartdruckers

"rundll32 printui.dll,PrintUIEntry /y /n Druckername"
Wüsste aber nicht wie ich die lokalen Drucker auslesen und anschließend zum Standartdrucker machen könnte.

Freundliche grüße

Chillaholic

Content-Key: 135393

Url: https://administrator.de/contentid/135393

Printed on: April 19, 2024 at 20:04 o'clock

Member: matsahm
matsahm Feb 07, 2010, updated at Oct 18, 2012 at 16:41:04 (UTC)
Goto Top
Hallo,

Vielleicht hilft dir das ja weiter:
installierte Drucker auslesen


Gruß
Mathias Sahm
Mitglied: 76109
76109 Feb 08, 2010 at 12:21:04 (UTC)
Goto Top
Hallo Chillaholic!

Du kannst ja mal die beiden VB-Scripts (*.vbs) testen.

Es werden lokale Drucker an USB und LPT ermittelt, wobei auch geprüft wird, ob im Druckernamen das Wort "FAX" (Multifunktionsdrucker) vorkommt, sodass - falls vorhanden - nur der Drucker als Standarddrucker festgelegt wird.

Hier mal 2 Versionen. Die Version 1 setzt den Standardrucker unabhängig davon, ob er ein- oder ausgeschaltet ist und Version 2 setzt den Standarddrucker nur, wenn er eingeschaltet ist.

Version1 - Lokalen Drucker an USB/LPT als Standarddrucker festlegen:
Const strComputer = "."  
Const strSql = "SELECT * FROM Win32_Printer WHERE (PortName LIKE 'USB%' OR PortName LIKE 'LPT%')"  

Dim objWMIService, colItems, objItem
    
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")  
Set colItems = objWMIService.ExecQuery(strSql, , 48)
    
For Each objItem In colItems
    If objItem.Local Then
        If InStr(1, objItem.Name, "FAX", vbTextCompare) = 0 Then objItem.SetDefaultPrinter:  Exit For  
    End If
Next

Version2 - Lokalen Drucker an USB/LPT als Standarddrucker festlegen, nur wenn er Online ist:
Const strComputer = "."  
Const strSql = "SELECT * FROM Win32_Printer WHERE (PortName LIKE 'USB%' OR PortName LIKE 'LPT%')"  

Dim objWMIService, colItems, objItem
    
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")  
Set colItems = objWMIService.ExecQuery(strSql, , 48)
    
For Each objItem In colItems
    If objItem.Local And objItem.WorkOffline = False Then
        If InStr(1, objItem.Name, "FAX", vbTextCompare) = 0 Then objItem.SetDefaultPrinter:  Exit For  
    End If
Next

Gruß Dieter
Member: Chillaholic
Chillaholic Feb 08, 2010 at 21:33:44 (UTC)
Goto Top
Nabend,

@ matsahm
Danke für den Link hab hier auch schon ein bisschen gesucht aber den thread nich gesehen,
denk mal dass der mein Problem gelöst hat.
So ähnlich hab ichs mir vorgestellt.
@ didi1954
Danke für die Hilfe, aber kann die .vbs auch als normaler User aufgerufen werden, glaub dafür fehlen die Rechte.
Mitglied: 76109
76109 Feb 08, 2010 at 22:03:00 (UTC)
Goto Top
Hallo Chillaholic!

Hast Du's auspropiert? Quelltext z.B. unter "SetStandardPrinter.vbs" speichern und per Doppelklick starten.

Aufruf per Batch:

@echo Off
cscript //nologo SetStandardPrinter.vbs

Gruß Dieter