Drucken aus der Windows-(DOS-)Kommandozeile auf einen USB- oder Netzwerkdrucker

„Was hat dieses Thema denn konkret mit Oracle zu tun?“, wird sich mancher Leser fragen. Nun, allzuviele Anwendungsfälle wird es dafür wohl nicht geben, aber stellen wir uns mal folgendes Szenario vor:

  • Existierende Batch-Skripte sollen weiterhin verwendet werden, weil der Aufwand für eine Neuentwicklung zu hoch ist oder
  • SQL*Plus soll direkt zum Drucken verwendet werden

Auch wenn diese Umstände wohl nicht sehr oft auftreten werden, der eine oder andere, der über eine Suchmaschine hierher gelangt ist, wird sich bestimmt freuen — selbst wenn er die folgenden Tips ganz ohne SQL*Plus umsetzt. :-)

Profi-Lösungen

Für Anwender, die es noch viel mit DOS-Umgebungen oder Anwendungen, die nur auf Parallelports ausgeben können, zu tun haben, gibt es verschiedene Lösungen gegen (z.T. viel) Geld. Genannt seien hier — ohne Wertung oder Anspruch auf Vollständigkeit — DOS2USB, Printfil und ExDOS (Links s.u.).

Diese Lösungen bieten oft viele zusätzliche Funktionen wie Versand per eMail, Fax, etc. Für die oben beschriebenen und viele andere Fälle reichen allerdings ein paar Kniffe, die vollständig mit Bordmitteln funktionieren:

Lösung mit Bordmitteln

Windows 2000 und XP

Zusätzlich zu den u.g. Schritten kann theoretisch auch das Pooling verwendet werden (s. Abschnitt zu Vista). Im Netz sind aber etliche Problemberichte zu finden, daher nenne ich die folgende Alternative, die über Netzwerk-Freigaben arbeitet:

  1. Den gewünschten Drucker im Netzwerk freigeben.
    Dieser Schritt entfällt, wenn es sich bereits um einen Netzwerkdrucker handelt.
  2. In der Windows-Kommandozeile
    net use lpt1: \\servername\druckername
    eingeben. „servername“ steht entweder für den Netzwerk-Druckserver oder den eigenen Computer, wenn der Drucker dort freigegeben ist.
  3. Fertig! Nun kann schon gedruckt werden.

Windows 7 und Vista

Vista erlaubt mit der Funktion „Druckerpool“, mehrere Anschlüsse als wechselseitige Alternativen für einen Drucker zusammenzufassen. Dies „mißbrauchen“ wir, indem wir einen Netzwerk- oder USB-Drucker mit dem unter DOS leicht erreichbaren Port „lpt1:“ koppeln. Wird auf lpt1: kein Drucker gefunden, wird der nächste, alternative Anschluss im Pool benutzt.

    1. Die Eigenschaften des gewünschten Druckers in der Systemsteuerung aufrufen;
      Achtung bei Windows 7: dort gibt es auch den Menüpunkt „Eigenschaften“, aber der richtige ist „Druckereigenschaften“.
    2. Im Reiter „Anschlüsse“ die Funktion „Druckerpool aktivieren“ ankreuzen.
    3. Nun den Anschluss „LPT1:“ in der Liste ankreuzen.
    4. Auf „OK“ drücken und losdrucken! ;-)

Bei manchen Druckertreibern kann es vorkommen, daß die letzte Seite nicht automatisch ausgeworfen wird. Dann sind noch folgende Schritte nötig, um einen Seitenvorschub („Form Feed“) zu erzeugen:

  1. Die Eigenschaften des gewünschten Druckers in der Systemsteuerung aufrufen.
  2. Im Reiter „Erweitert“ den Button „Druckprozessor“ anklicken.
  3. Unter „Standarddatentyp“ die Option „RAW [FF appended]“ anwählen.
  4. Alles mit OK bestätigen.

Drucken unter SQL*Plus

Und nun doch noch etwas Spezielles für die Oracler:

In mancher Fachliteratur heißt es, daß das Drucken unter SQL*Plus mit der Direktive „SPOOL OUT“ nicht unter Windows möglich ist. Das stimmt nur bedingt: Es funktioniert nicht so, wie in der Oracle-Doku beschrieben. Dort heißt es, daß die mit SPOOL erzeugte Datei an den Standard-Drucker gesandt wird. Wir können aber auch die alte DOS-Spezialität nutzen und direkt auf den Druckerport schreiben; über den zuvor erstellten Druckerpool landet die Ausgabe dann auf dem mit diesem Anschluss verbundenen Drucker:

set echo off
spool lpt1:
SELECT sysdate FROM dual;
spool out

„SPOOL OUT“ erzeugt noch einen finalen Seitenvorschub, der die letzte Seite ausgibt.

Weblinks

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s