Word- und PDF-Dokumente und Excel-Tabellen via Batch drucken?
Hallo!
Ich möchte mithilfe einer Batch-Datei wie im Titel beschrieben verschiedene Datei-Formate ausdrucken lassen. Doch es will nicht so ganz funktionieren...
Ich habe mir mithilfe einiger hier geschilderter Tipps für den Druck von Word-Dokumenten eine Batch-Datei geschrieben, die auf die Lösungsansätze aus diesem Thread basieren.
Doch leider wirft das Programm bei mir nur eine Fehlermeldung aus (Kompilierungsfehler). Zudem kann ich auch nicht auf den LPT1-Trick zurückgreifen, da der Drucker über den USB-Port angeschlossen worden ist und ich auch keine Veränderungen am bestehenden System vornehmen kann, weil es nicht mein eigener Rechner ist (damit fällt die Installation von Zusatzsoftware leider auch weg.)
Also, was ich ganz allgemein mit der Batch-Datei erreichen möchte:
In einem Ordner (hier: resources/00001234/ ), den der User zuvor durch eine simple Abfrage selbst raussucht, sind verschiedene Dateien, die die Stapelverarbeitung alle ausdrucken soll.
Mit dem print-Befehl kommt dabei nur die Anzeige, dass gedruckt wird. Auf diese ganze Geschichte mit LPT1 kann ich wie oben geschildert auch nicht zurückgreifen.
Dieser Code funktioniert leider auch nur bei Text-Dokumenten, bei allen anderen Formaten bekomme ich logischerweise nur lauter Müll.
Gibt es da eventuell eine - für die drei genannten Formate - universelle Lösung, die im besten Fall auch nicht auf externe Dateien zurückgreift.
Und noch eine kurze Frage, die nicht direkt mit dem Thema selbst zu tun hat, aber ich stelle sie dennoch hier, da ich nicht extra einen Thread dafür eröffnen möchte:
Gibt es eine include-Funktion in Batch-Dateien? Ich habe schon danach gesucht, aber leider nichts vernünftiges finden können.
Den Befehl kenne ich nämlich aus PHP und damit könnte ich nämlich problemlos das Batch selbst mit einer anderen integrierten Batchfile bearbeiten, da ich dann die einzelnen Bestandteile der ersten Batch in Text-Dateien auslasten könnte.
Ich möchte mithilfe einer Batch-Datei wie im Titel beschrieben verschiedene Datei-Formate ausdrucken lassen. Doch es will nicht so ganz funktionieren...
Ich habe mir mithilfe einiger hier geschilderter Tipps für den Druck von Word-Dokumenten eine Batch-Datei geschrieben, die auf die Lösungsansätze aus diesem Thread basieren.
Doch leider wirft das Programm bei mir nur eine Fehlermeldung aus (Kompilierungsfehler). Zudem kann ich auch nicht auf den LPT1-Trick zurückgreifen, da der Drucker über den USB-Port angeschlossen worden ist und ich auch keine Veränderungen am bestehenden System vornehmen kann, weil es nicht mein eigener Rechner ist (damit fällt die Installation von Zusatzsoftware leider auch weg.)
Also, was ich ganz allgemein mit der Batch-Datei erreichen möchte:
In einem Ordner (hier: resources/00001234/ ), den der User zuvor durch eine simple Abfrage selbst raussucht, sind verschiedene Dateien, die die Stapelverarbeitung alle ausdrucken soll.
Mit dem print-Befehl kommt dabei nur die Anzeige, dass gedruckt wird. Auf diese ganze Geschichte mit LPT1 kann ich wie oben geschildert auch nicht zurückgreifen.
Notepad /p test.txt
Dieser Code funktioniert leider auch nur bei Text-Dokumenten, bei allen anderen Formaten bekomme ich logischerweise nur lauter Müll.
Gibt es da eventuell eine - für die drei genannten Formate - universelle Lösung, die im besten Fall auch nicht auf externe Dateien zurückgreift.
Und noch eine kurze Frage, die nicht direkt mit dem Thema selbst zu tun hat, aber ich stelle sie dennoch hier, da ich nicht extra einen Thread dafür eröffnen möchte:
Gibt es eine include-Funktion in Batch-Dateien? Ich habe schon danach gesucht, aber leider nichts vernünftiges finden können.
Den Befehl kenne ich nämlich aus PHP und damit könnte ich nämlich problemlos das Batch selbst mit einer anderen integrierten Batchfile bearbeiten, da ich dann die einzelnen Bestandteile der ersten Batch in Text-Dateien auslasten könnte.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 169170
Url: https://administrator.de/contentid/169170
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo TexMex und willkommen im Forum!
Im angesprochenen Thread hatte ich eine VBS-Variante "PrintAllDocs.vbs" verbrochen, die angepasst auf Deine Anforderung etwa so aussehen würde:
Im Prinzip wird hier für jede Datei, sofern sie den vorgegebenen Typen (siehe Zeile 3) entspricht, die Auswahl von "Drucken" im Kontextmenü des Explorers "simuliert" ...
Zu Deiner "Batch"-Frage: Ein Batch kann einen anderen Batch per "
Grüße
bastla
Im angesprochenen Thread hatte ich eine VBS-Variante "PrintAllDocs.vbs" verbrochen, die angepasst auf Deine Anforderung etwa so aussehen würde:
'PrintCertainFiles.vbs
sSourceFolder = "D:\resources\00001234" ' Standard-Ordner; kann durch Übergabe eines Ordners als Parameter ersetzt werden
sDateitypen = "#doc#docx#pdf#xls#xlsx#" ' zu verarbeitende Dateitypen - bitte nur in Kleinbuchstaben
iWartezeit = 5 'Pause in Sekunden bis zur Verarbeitung der nächsten Datei
If WScript.Arguments.Count > 0 Then
sSourceFolder = WScript.Arguments(0)
End If
Set fso = CreateObject("Scripting.FileSystemObject")
If sSourceFolder = "" Or Not fso.FolderExists(sSourceFolder) Then
WScript.Echo "Ordner """ & sSourceFolder & """ nicht verfügbar!"
WScript.Quit(2)
Else
Set oShellApp = WScript.CreateObject("Shell.Application")
For Each oFile In fso.GetFolder(sSourceFolder).Files
If InStr(sDateitypen, "#" & LCase(fso.GetExtensionName(oFile.Name)) & "#") > 0 Then
oShellApp.ShellExecute oFile.Path, "", "", "print", 0
bPrinted = True
WScript.Sleep(1000 * iWartezeit)
End If
Next
Set oShellApp = Nothing
If Not bPrinted Then
WScript.Echo "Kein Dokument zum Drucken gefunden!"
WScript.Quit(1)
End If
End If
Zu Deiner "Batch"-Frage: Ein Batch kann einen anderen Batch per "
call
" aufrufen - ein unmittelbares "Include" gibt es aber leider nicht.Grüße
bastla
Hallo,
zu deiner zweiten Frage:
wenn du eine zweite Batch hast, in der genau eine Funktion enthalten ist, kannst du diese per "call" wie ein Unterprogramm ausführen.
Wenn du wirklich ein Include willst, versuch folgendes:
Ist noch nicht perfekt-aber wenn du das in eine Include.bat speicherst, und dann die Originaldatei so beginnst könnte es ein Schritt in die gewünschte Richtung sein.
Zuerst muss die Datei selbst eingebunden werden, jedoch ohne den ersten Zeilen, da stehen ja die Includebefehle.
Danach wird die Bsp.txt eingebunden, die könnte so ausschauen:
Nun wird die Temp.bat gestartet und die Batch verlassen. Alles was jetzt kommt wird dann in der Temp.bat ausgeführt. Hier also:
MfG,
Mathe172
zu deiner zweiten Frage:
wenn du eine zweite Batch hast, in der genau eine Funktion enthalten ist, kannst du diese per "call" wie ein Unterprogramm ausführen.
Wenn du wirklich ein Include willst, versuch folgendes:
if exist "Temp.bat" (
copy "Temp.bat"+"%~1" "Temp.bat"
) else (
>"Temp.bat" more +%~2 "%~1"
)
rem Die 6 steht für die Anzahl Zeilen in dieser Datei, die ausgelassen werden sollen
2>nul del "Temp.bat"
@call include "%~0" 6
@call include "Bsp.txt"
start "Temp.bat"
goto :eof
call :Ordner
Zuerst muss die Datei selbst eingebunden werden, jedoch ohne den ersten Zeilen, da stehen ja die Includebefehle.
Danach wird die Bsp.txt eingebunden, die könnte so ausschauen:
:Ordner
cd
pause
call :Ordner
cd
pause
MfG,
Mathe172
Moin,
Wer hindert Dich daran, für den über USB angeschlossenen Drucker eine Freigabe zu erstellen und den so freigegebenen Drucker per "net use"-Befehl an LPT1 zu hängen?
Gruß J chem
Zudem kann ich auch nicht auf den LPT1-Trick zurückgreifen, da der Drucker über den USB-Port angeschlossen worden ist und ich auch keine Veränderungen am bestehenden System > vornehmen kann....
Wer hindert Dich daran, für den über USB angeschlossenen Drucker eine Freigabe zu erstellen und den so freigegebenen Drucker per "net use"-Befehl an LPT1 zu hängen?
Gruß J chem
Hallo TexMex!
Da, wie erwähnt, das Script auch einen Parameter übernimmt, kannst Du es einfach per
aufrufen - auf Wunsch auch per
in der Konsolenversion ...
Außerdem werden Errorlevel zurückgegeben - siehe dazu die jeweiligen "
Grüße
bastla
Da, wie erwähnt, das Script auch einen Parameter übernimmt, kannst Du es einfach per
C:\Scripts\PrintCertainFiles.vbs "D:\Dein anderes Verzeichnis"
cscript //nologo C:\Scripts\PrintCertainFiles.vbs "D:\Dein anderes Verzeichnis"
Außerdem werden Errorlevel zurückgegeben - siehe dazu die jeweiligen "
WScrpit.Quit()
"-Zeilen.Grüße
bastla