Hi Leutz,
ich habe ein Script gebaut, mit dem ich Drucker aus dem System löschen kann, die nicht mehr in der Geräteliste auftauchen.
Das passiert schon mal, wenn man z.B. einen Drucker löscht und ihn (= den selben) Drucker erneut anlegen will.
Dann meint das System, dass der alte Drucker noch vorhanden sei. In der Geräteliste ist er zwar nicht mehr drin, jedoch
in der Liste der 'vorhandenen' Geräte (blöd formuliert ^^).
Mit der Zeile
Code: Select all
RunWait %ComSpec% /c ""c:\Windows\system32\cscript.exe" "C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs" "-l" > ""printer_list.txt" ,,hide
erstelle ich daher zunächst eine Liste, die ALLE dem System bekannten Drucker enthält. Dort werden auch Drucker aufgelistet, die eben
nicht mehr unter "Geräte/Drucker" angezeigt werden.
Diese zeige ich dem Benutzer in einem Listview an und er kann auswählen, welcher Drucker entfernt werden soll.
Bis hier hin klappt alles einwandfrei.
Wenn ich aber mit der Zeile
Code: Select all
RunWait %ComSpec% /k "c:\Windows\system32\cscript.exe C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -d -p """TESTDRUCKER""" -s PC"
dann einen Drucker löschen will (oben den TESTDRUCKER), klappt das nur, wenn ich dessen Namen direkt angebe, aber nicht wenn ich eine Variable mit dem Druckernamen einsetze. Gleiches gilt für den Computernamen. Sobald Variablen enthalten sind, klappt das Löschen nicht mehr.
Anzumerken wäre noch, dass der Druckername in " eingeschlossen werden muss, da er ja Leerzeichen enthalten könnte.
Ich bin sicher, es liegt "nur" an den Anführungszeichen ("). Daraus werde ich aber irgendwie nicht richtig schlau
Vielleicht kann mir da jemand ´nen Tipp zu geben?
Wenn jemand weiß, wie ich das ohne eine temporäre Textdatei, bzw. ganz ohne VB und "cscript..." hin bekomme, wäre auch das klasse.
Lieben Dank im Voraus,
Gucky.