Drucker löschen

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
Gucky_87
Posts: 332
Joined: 03 Jul 2014, 05:09

Drucker löschen

27 Apr 2019, 09:01

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.
just me
Posts: 6570
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Drucker löschen

28 Apr 2019, 04:05

Mensch Mausbiber,

Du bist doch schon so lange dabei. Wenn Du schreibst "Sobald Variablen enthalten sind, klappt das Löschen nicht mehr." solltest Du auch ein Beispiel für Deine Versuche einstellen.

Run ist ein AHK-Kommando und erwartet seine Parameter deshalb standardmäßig in der Kommando-Syntax. Das wiederum bedeutet, dass im Gegensatz zur Expression-Syntax alle Anführungszeichen (") einfach weitergereicht werden.

Wenn

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"
funktioniert, folgt daraus, dass

Code: Select all

RunWait %ComSpec% /k "c:\Windows\system32\cscript.exe C:\Windows\System32\Printing_Admin_Scripts\de-DE\prnmngr.vbs -d -p """%DruckerName%""" -s %PCName%"
ebenfalls funktionieren sollte. Die Anführungszeichen bewirken in beiden Fällen dasselbe.

Hast Du das schon versucht?

Gruß, just me
User avatar
Gucky_87
Posts: 332
Joined: 03 Jul 2014, 05:09

Re: Drucker löschen

28 Apr 2019, 16:15

Huhu Just me,

nicht hauen, bitte ;)
Dein Beispiel funktioniert in der Tst. Daher ganz lieben Dank dafür.
Ich hatte zig Varianten gebastelt, aber keine hat funktioniert.
Entweder ging es mit % Zeichen nicht oder mit .... " . DRUCKERNAME . ...

Daher schrieb ich ja auch, dass vermutlich mit den " etwas nicht stimmt.
Was mir ein Deinem (funktionierenden) Beispiel auffällt ist, dass mein Editor
(Notepad2), sobald ich %DRUCKERNAME% einfüge sagt, dass die " ungleich wären
(sprich ein öfffnendes/schließendes zu viel/zu wenig. DAS verstehe ich nicht daran.
Ich habe doch an den " nichts verändert und nur ZWEI % Zeichen letztlich eingefügt?!

Das verwirrt mich eben daran.

Gucky.
just me
Posts: 6570
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Drucker löschen

29 Apr 2019, 00:21

Moin,
Das verwirrt mich eben daran.
Ich weiß es nicht, aber es spricht dafür, dass Dein Notepad2 (hatte ich auch mal, ist ein guter schlanker Editor) eine Einstellung für eine Sonderbehandlung bestimmter Zeichenkombinationen hat (ich tippe mal auf %"). Mit AHK hat das wohl nichts zu tun. Und mir ist bisher nicht klar, warum es so viele Anführungszeichen sein müssen.

Grüße,
just me
User avatar
jNizM
Posts: 2538
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: Drucker löschen

29 Apr 2019, 04:53

Hey,

wenn es Netzwerkdrucker sind, kannst du dir ja mal das (https://www.autohotkey.com/boards/viewtopic.php?f=6&t=62955) anschauen.
Für Lokale Drucker muss ich die Klasse allerdings noch erweitern.
[AHK] 1.1.30.03 x64 Unicode | [WIN] 10 Pro (Version 1909) x64 | [GitHub] Profile
Donations are appreciated if I could help you
User avatar
Gucky_87
Posts: 332
Joined: 03 Jul 2014, 05:09

Re: Drucker löschen

29 Apr 2019, 04:58

Müssen sicher nicht ;D
Ich erinnerte mich halt nur, dass man, wenn man einen Text innerhalb einer Ausgabe selbst in " setzen will, man """ Text """ schreiben muss.
Daher kann ich vermutlich aus """ einfach " machen, gell?
Na, ich teste das einfach.

Was notepad2 angeht, habe ich eine für AHK gepatchte Version Namens "notepad2-mod".
Diese Version kann u.A. auch Syntax Highlighting von LSL Scripten, womit ich ach öfters arbeite.

Wie gesagt, die Anzeige, dass ich zu viele/zu wenige % oder " im Text habe, hat mich irritiert.

Daher nochmals danke für Deinen Tipp.

@ jNizM: Das schau ich mir an, obgleich es sich in meinen´m Fall ausschließlich um lokale Drucker handelt. Danke auch Dir.

Gucky.
just me
Posts: 6570
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Drucker löschen

29 Apr 2019, 08:21

Hi Gucky,

das mit den "verdoppelten Anführungszeichen" braucht AHK nur in der Expression-Syntax innerhalb von mit Anführungszeichen umgebenen Texten.
User avatar
Gucky_87
Posts: 332
Joined: 03 Jul 2014, 05:09

Re: Drucker löschen

29 Apr 2019, 09:14

Ahh ok, alles klar.

Dankööö,

Guck.

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: Bing [Bot] and 35 guests