Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Word- und PDF-Dokumente und Excel-Tabellen via Batch drucken?

Frage Entwicklung Batch & Shell

Mitglied: TexMex

TexMex (Level 1) - Jetzt verbinden

05.07.2011 um 17:09 Uhr, 8822 Aufrufe, 8 Kommentare

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.

01.
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.
Mitglied: bastla
05.07.2011 um 20:56 Uhr
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:
01.
'PrintCertainFiles.vbs 
02.
sSourceFolder = "D:\resources\00001234" ' Standard-Ordner; kann durch Übergabe eines Ordners als Parameter ersetzt werden 
03.
sDateitypen = "#doc#docx#pdf#xls#xlsx#" ' zu verarbeitende Dateitypen - bitte nur in Kleinbuchstaben 
04.
iWartezeit = 5 'Pause in Sekunden bis zur Verarbeitung der nächsten Datei 
05.
 
06.
If WScript.Arguments.Count > 0 Then 
07.
    sSourceFolder = WScript.Arguments(0) 
08.
End If 
09.
Set fso = CreateObject("Scripting.FileSystemObject") 
10.
If sSourceFolder = "" Or Not fso.FolderExists(sSourceFolder) Then 
11.
    WScript.Echo "Ordner """ & sSourceFolder & """ nicht verfügbar!" 
12.
    WScript.Quit(2) 
13.
Else 
14.
    Set oShellApp = WScript.CreateObject("Shell.Application") 
15.
    For Each oFile In fso.GetFolder(sSourceFolder).Files 
16.
        If InStr(sDateitypen, "#" & LCase(fso.GetExtensionName(oFile.Name)) & "#") > 0 Then 
17.
            oShellApp.ShellExecute oFile.Path, "", "", "print", 0 
18.
            bPrinted = True 
19.
            WScript.Sleep(1000 * iWartezeit) 
20.
        End If 
21.
    Next 
22.
    Set oShellApp = Nothing 
23.
    If Not bPrinted Then 
24.
        WScript.Echo "Kein Dokument zum Drucken gefunden!" 
25.
        WScript.Quit(1) 
26.
    End If 
27.
End If
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 "call" aufrufen - ein unmittelbares "Include" gibt es aber leider nicht.

Grüße
bastla
Bitte warten ..
Mitglied: mathe172
05.07.2011 um 23:31 Uhr
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:
01.
if exist "Temp.bat" ( 
02.
copy "Temp.bat"+"%~1" "Temp.bat" 
03.
) else ( 
04.
>"Temp.bat" more +%~2 "%~1" 
05.
)
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.
01.
rem Die 6 steht für die Anzahl Zeilen in dieser Datei, die ausgelassen werden sollen 
02.
2>nul del "Temp.bat" 
03.
@call include "%~0" 6 
04.
@call include "Bsp.txt" 
05.
start "Temp.bat" 
06.
goto :eof 
07.
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
Nun wird die Temp.bat gestartet und die Batch verlassen. Alles was jetzt kommt wird dann in der Temp.bat ausgeführt. Hier also:
call :Ordner 
cd 
pause
MfG,
Mathe172
Bitte warten ..
Mitglied: Jochem
06.07.2011 um 07:39 Uhr
Moin,

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
Bitte warten ..
Mitglied: TexMex
06.07.2011 um 17:02 Uhr
Das Script hat funktioniert!
Aber ich habe dazu noch eine Frage:
Kann ich als Verzeichnis in dem VBScript auch eine Variabel aus der Batch-Datei nehmen oder ist das nicht möglich?

Den Trick mit dem Include werde ich bei Gelegenheit ausprobieren, klingt auf jeden Fall sehr gut.
Bitte warten ..
Mitglied: bastla
06.07.2011 um 17:42 Uhr
Hallo TexMex!

Da, wie erwähnt, das Script auch einen Parameter übernimmt, kannst Du es einfach per
C:\Scripts\PrintCertainFiles.vbs "D:\Dein anderes Verzeichnis"
aufrufen - auf Wunsch auch per
cscript //nologo C:\Scripts\PrintCertainFiles.vbs "D:\Dein anderes Verzeichnis"
in der Konsolenversion ...

Außerdem werden Errorlevel zurückgegeben - siehe dazu die jeweiligen "WScrpit.Quit()"-Zeilen.

Grüße
bastla
Bitte warten ..
Mitglied: TexMex
07.07.2011 um 16:44 Uhr
Zitat von bastla:
auf Wunsch auch per
cscript //nologo C:\Scripts\PrintCertainFiles.vbs "D:\Dein anderes Verzeichnis" 
> 
in der Konsolenversion ...

Außerdem werden Errorlevel zurückgegeben - siehe dazu die jeweiligen "WScrpit.Quit()"-Zeilen.

Grüße
bastla

Hallo bastla!

Erstmal nochmals ein großes Danke an dich für dieses tolle Skript. Es funktioniert jetzt tadellos, leider habe ich noch ein kleines Problem in der Batch-Datei selbst, denn nachdem das VBScript gestartet wird, beendet sich meine Batch - genau das sollte es aber eigentlich nicht machen. Ich hab's dann via "Call"-Befehl ausprobiert, weil dadurch die Stapelverarbeitung eigentlich weiterlaufen sollte, aber auch hier wird das Programm nur beendet.

Ich habe dann ein paar Seiten durchforstet, dort stand dann etwas von WBScript und dass ich es über
wscript //b C:\Scripts\PrintCertainFiles.vbs "D:\Mein Verzeichnis"
aufrufen solle, aber das hat auch wieder nichts geändert.

Zitat von Jochem:
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

Hey Jochem!

Wie oben schon geschildert, handelt es sich bei dem Rechner nicht um meinen eigenen PC, sondern um einen Firmen-Rechner, bei dem ich nicht die vollen Zugriffsrechte habe. Mit diesem kleinen Script möchte ich einfach nur mir und meinen Kollegen einen ganzen Haufen Arbeit ersparen.
Bitte warten ..
Mitglied: bastla
07.07.2011 um 16:57 Uhr
Hallo TexMex!

Eigentlich sollte der Batch auf das Ende des Scripts warten ...

... anyhow - versuch es so:
start "Drucken ..." /wait cscript //nologo C:\Scripts\PrintCertainFiles.vbs "D:\Dein anderes Verzeichnis"
Grüße
bastla
Bitte warten ..
Mitglied: TexMex
09.07.2011 um 13:04 Uhr
Damit hat es leider auch nicht funktioniert, ich habe einfach eine neue Batch-Datei mit der entsprechenden Zeile für das CScript erstellt und diese dann via "Call-Befehl" ausgeführt. Das ist wohl nicht optimal, aber es funktioniert dann zumindest ohne Probleme.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(6)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
gelöst Excel Tabellen Vergleich (1)

Frage von Dr.Cornwallis zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel Pdf Datei als Icon Symbol in Word einfügen per Drag and drop? (4)

Frage von Geforce zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (17)

Frage von Unwichtig zum Thema Netzwerkmanagement ...