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 Document durch Batch drucken

Frage Entwicklung Batch & Shell

Mitglied: Hannibal

Hannibal (Level 1) - Jetzt verbinden

16.01.2007, aktualisiert 20.01.2007, 27382 Aufrufe, 20 Kommentare

Hallo,

ist es möglich durch eine Batch ein Word Document zu drucken.
Es ist immer nur eine Datei in dem Verzeichnis und sie liegt immer auf "A:\" also auf Diskette.
Das nächste Problem ist das die Datei immer einen anderen Namen hat also "*.doc"
Ich hatte mir das so vorgestellt das die Datei mit Doppelklick auf die Batch gedruckt wird, es wär natürlich dann auch noch schön wenn sich das Document danach wieder schließt, was aber nicht so wichtig wäre.
Der Druckername is "hp psc 1310 series"

Ich wäre um eine Hilfe sehr dankbar

Mit freundlichen Grüßen
Dominik Bader
Mitglied: Mitchell
16.01.2007 um 14:33 Uhr
korrigiert mich bitte, wenn ich da falsch liege (biber!!!^^), aber wie wär's denn mit folgdendem Ansatz:

print A:/mein_verzeichnis/*.doc

Mit freundlichen Grüßen

Mitchell
Bitte warten ..
Mitglied: Kosh
16.01.2007 um 14:41 Uhr
dann schiebt er die datei aber am LPT1 Port raus.

wenn dann

print /D:"Druckername" *.doc
Bitte warten ..
Mitglied: Biber
16.01.2007 um 14:56 Uhr
Hmm,

normalerweise sollte unter HKEY_CLASSES_ROOT\Word.Document.8\shell\Print\command stehen, was passiert, wenn der Benutzer im Explorer bei einem Word-Dokoment "Drucken" anklickt.

Das ist dann meist etwas wie

"C:\Programme\Microsoft Office\OFFICE11\WINWORD.EXE" /x /n /dde

Damit (+den Dateinamen als Parameter) würde ich zuerst experimentieren.
Der Print-Befehl kann zwar drucken, aber nichts spezifisch formatiertes wie *.doc, *.pdf oder *.xls, sondern nur Plain-Text (so was wie meine Oneliner z.B.).

Für alles andere muss schon die entsprechende Applikation genutzt werden IMHO.

Gruß
Biber
Bitte warten ..
Mitglied: Hannibal
16.01.2007 um 16:38 Uhr
Ich möchte mich erst mal bei allen bedanken hätte nicht gedacht, dass ich so schnell eine Antwort bekomme. Hab mich sehr darüber gefreut!

Erst mal an Mitchell und Kosh so hab ichs am Anfang auch probiert aber habe dann festgestellt, wie biber scho sagte, dass der Befehl print nur für z.B. txt-Datein funktioniert aber trotzdem herzlichen Dank für die Mühe.

Dann an biber vielen Dank werde es jetzt mal so probieren vielleicht bekomm ichs ja so hin.Bis jetzt macht er zwar das richtige Document auf aber startet denn Druckbefehl nicht. Naja mal schaun, wenn ichs nicht hinbekomme rühr ich mich einfach nochmal.

Mit freundlichen Grüßen
Dominik
Bitte warten ..
Mitglied: Biber
16.01.2007 um 19:57 Uhr
Moin Bader,

...und falls Du noch keine Einzeiler-Lösung hinbekommen hast, hier eine mittellange Lösung mit VBSkript:

01.
' -----------------snipp PrintADoc.vbs Biber 2007 
02.
If WScript.Arguments.Count < 1 Then 
03.
	WScript.Echo("Syntax: PrintADoc.vbs Worddatei.doc [Druckername]" ) 
04.
	WScript.Quit 
05.
End If 
06.
 
07.
strFile = WScript.Arguments(0) 
08.
 
09.
Set objWord = WScript.CreateObject("Word.Application") 
10.
' If WScript.Arguments.Count = 1 Then ' Bug in der ur-Version, s. [Edit] 
11.
If WScript.Arguments.Count > 1 Then 
12.
   objWord.ActivePrinter = Wscript.Arguments(1) 
13.
end if    
14.
objWord.Documents.Open strFile 
15.
objWord.ActiveDocument.PrintOut 
16.
 
17.
Wscript.Sleep(0815) 
18.
 
19.
objWord.ActiveDocument.Close 
20.
objWord.Quit 
21.
' -----------------snapp PrintADoc.
Aufruf des Skriptchens aus einem Batch heraus (Beispiel):
01.
cscript //nologo f:\VBS_Beispiele\PrintADoc.vbs "f:\jokes\StoibersGedichte.doc"
Nicht nobelpreisverdächtig, aber bis Du etwas Vernünftigeres hast...

Grüße
Biber


[Edit 5.11.2009 ]
Der HEUTE im Skript Vers. 001 korrigierte Bug "WScript.Arguments.Count = 1" statt "...>1" ist zwar weiter unten erwähnt,
aber da er offensichtlich überlesen werden kann--> Bugfix nachgezogen. [/Edit]
Bitte warten ..
Mitglied: Hannibal
17.01.2007 um 20:43 Uhr
Hallo Biber,
ja ist auch ne super Idee das ganze mit nem VBSkript zu machen. Bekomm die ganze Sache nur leider nicht zum laufen

Noch so nebenbei vielleicht kann mir ja da auch noch jemand weiterhelfen.
Hab hier auch noch ein VBSkript das mir die Datein auflistet die in einem Ordner sind und im Editor aufmacht.
Hätte aber gern auch noch die Datein der ganzen Unterordner dabei.
Hier das Skript:
Dim WshShell, FSO, oFol, Arg, s2, oFils, oExec

Set FSO = CreateObject("Scripting.FileSystemObject")
Arg = WScript.Arguments(0)
If FSO.FolderExists(Arg) = False Then
MsgBox "Bitte Ordner mit der Maus draufziehen um Inhalt zu sehen!", 64
Set FSO = Nothing
WScript.Quit
End If

Set oFol = FSO.GetFolder( Arg )
Set oFils = oFol.Files
For Each oFil in oFils
s2 = s2 & oFil.Name & VBCrLf

WriteToFile
Next

Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec("notepad" + " " + oFol.Path + "\liste.txt")

Function WriteToFile
Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(oFol.Path + "\liste.txt", ForWriting, True)
f.Write s2
End Function

Mit freundlichen Grüßen
Dominik
Bitte warten ..
Mitglied: Biber
17.01.2007 um 21:43 Uhr
Moin Bader,

Rückfragen:
... Bekomm die ganze Sache nur leider nicht zum laufen
Könntest Du es eine Winzigkeit detaillierter beschreiben oder soll ich lieber raten?
Hätte aber gern auch noch die Datein der ganzen Unterordner dabei.
WTF hat das mit "Word-Document durch Batch drucken" zu tun bzw. wer soll das jemals unter diesem Titel wiederfinden?
*pfffffff....Reagier ich gar nicht drauf..
Hätte aber gern auch noch die Datein der ganzen Unterordner dabei.
Meinst Du so in dieser Richtung?
01.
'----------Snipp GetFolderList.vbs 
02.
Const ForReading = 1, ForWriting = 2, BiberComment = "Just kidding 2007" 
03.
Dim WshShell, FSO, oFol, Arg, s2, oFils, oExec 
04.
Set FSO = CreateObject("Scripting.FileSystemObject") 
05.
Arg = WScript.Arguments(0) 
06.
If FSO.FolderExists(Arg) = False Then 
07.
   MsgBox "Bitte Ordner mit der Maus draufziehen um Inhalt zu sehen!", 64 
08.
   Set FSO = Nothing 
09.
   WScript.Quit 
10.
End If 
11.
 
12.
Set oFol = FSO.GetFolder( Arg ) 
13.
FriemelAbFolder oFol 
14.
Set f = fso.OpenTextFile(oFol.Path + "\liste.txt", ForWriting, True) 
15.
f.Write s2 
16.
f.close 
17.
Set FSO = nothing 
18.
Set WshShell = CreateObject("WScript.Shell") 
19.
Set oExec = WshShell.Exec("notepad" + " " + oFol.Path + "\liste.txt") 
20.
WScript.Quit 
21.
 
22.
'--------Wird für den Arg(0)-Ordner und damit implizit auch je SubFolder aufgerufen. 
23.
Sub FriemelAbFolder(oF) 
24.
Dim oSubFolders 
25.
Set oFils = oF.Files 
26.
For Each oFil in oFils  
27.
   s2 = s2 & oFil.Path & vbCRLF 
28.
Next 
29.
Set oSubfolders= oF.Subfolders 
30.
   For Each subF in oSubfolders 
31.
      FriemelAbFolder subF 
32.
   Next 
33.
End Sub 
Gruß
Biber
Bitte warten ..
Mitglied: bastla
18.01.2007 um 00:43 Uhr
@Biber
Muss man das wirklich mit diesem neumodischen Zeug machen - da reichen doch ein paar Zeilen Batch ...
01.
@echo off 
02.
if [%1]==[] goto :Instructions 
03.
if not exist "%1\" goto :Instructions 
04.
chcp 1252 > nul 
05.
del "%1\liste.txt" 2> nul 
06.
for /f "delims=" %%i in ('dir "%1" /s /b /a-d') do echo %%~nxi >> "%1\liste.txt" 
07.
start notepad "%1\liste.txt" 
08.
goto :eof 
09.
:Instructions 
10.
color 4e & title Kein Ordner zum Anzeigen! 
11.
echo Bitte Ordner mit der Maus draufziehen um Inhalt zu sehen! & (echo. ) & pause
Grüße
bastla
Bitte warten ..
Mitglied: Biber
18.01.2007 um 18:02 Uhr
@bastla
Muss man das wirklich mit diesem neumodischen Zeug machen ..?
Meine Therapeutin hat mir gesagt, ich müsste viel offener und toleranter werden...

Klar ginge das auch noch billiger, aber ob Du es nun per Batch, VBS, KiX oder COBOL umsetzt - es ist ja vom Design her so oder so für die Tonne.

Erstens kann ich damit nur eine Dateiliste von Verzeichnissen erzeugen, in denen ich auch Schreibrechte habe.
Weil ja diese Liste.txt immer direkt im (jeweils aufgerufenen relativen) Root-Verzeichnis angelegt wird.
Bei CDs, Netzlaufwerken oder randvollen Disketten, USB-Sticks oder USB-Kameras wird das wohl etwas abgrätschen.
Da würde ich lieber diese Liste in das %temp%\Verzeichnis schreiben.
Zweitens wird diese Liste.txt hinterher nicht gelöscht.
Wenn dieser Schnipsel also mal in der Computer-Bild veröffentlicht und von den Usern in unseren Domänen ausprobiert wird, dann habe ich innerhalb von 2 Tagen auf den Netzlaufwerken ca. 3 GigaByte Volumen nur für Liste.txt-Dateien.
Drittens bringen mich weder diese irgendwo gefundenen und geflickten VBS-Trümmer noch der Batch-Schnipsel bei der eigentlichen Frage weiter, wie ich so ein doofes Word-Dokument aus dem CMD-Environment drucken kann.

Und dann sacht er noch "..Bekomm die ganze Sache nur leider nicht zum laufen"...

Ich hätte doch besser Bäcker werden sollen...

Grüße
Biber
Bitte warten ..
Mitglied: bastla
18.01.2007 um 20:05 Uhr
@Biber

Da hab ich wohl nicht den richtigen Tag erwischt, um Dich ein wenig zu necken - zumindest ich fand aber unseren "Rollentausch" in der Verwendung von Batch / VBS lustig (jedenfalls um 00:43:49 Uhr).

Die Batch-Variante selbst ist natürlich nur der (ursprünglichen) Script-Lösung nachgekaspert - mit allen Einschränkungen / Designschwächen, die Du genannt hast.

@Bader

Ein weiterer Versuch (nicht auf Grundlage Deines ausführlichen Feedbacks zur oben angebotenen Lösung entstanden):
01.
'PrintAllDocs.vbs 
02.
sSourceFolder = "A:\" 
03.
If WScript.Arguments.Count > 0 Then 
04.
	sSourceFolder = WScript.Arguments(0) 
05.
End If 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
If Not fso.FolderExists(sSourceFolder) Then 
08.
	WScript.Echo "Ordner " & sSourceFolder & " nicht verfügbar!" 
09.
	WScript.Quit(2) 
10.
Else 
11.
	bPrintetd = False 
12.
	Set oShellApp = WScript.CreateObject("Shell.Application") 
13.
	For Each oFile In fso.GetFolder(sSourceFolder).Files 
14.
		If InstrRev(oFile.Name, ".") Then 
15.
			If LCase(Mid(oFile.Name, InstrRev(oFile.Name, "."))) = ".doc" Then 
16.
				oShellApp.ShellExecute oFile.Path, "", "", "print", 0 
17.
				bPrinted = True 
18.
				WScript.Sleep(5180) 
19.
			End If 
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
Verwendung:
  • Code als PrintAllDocs.vbs in C:\Programme speichern,
  • Verknüpfung auf Desktop erstellen,
  • Verknüpfung doppelklicken, um alle auf Diskette (A:\) gespeicherten .doc-Dateien zu drucken, oder

  • anderen Ordner auf Verknüpfung ziehen, um alle in anderem Ordner gespeicherten .doc-Dateien zu drucken, oder

  • Aufruf von der Kommandozeile mit
01.
CScript //nologo "C:\Programme\PrintAllDocs.vbs" "X:\Beispiel\für einen\Ordnerpfad"
HTH
bastla
Bitte warten ..
Mitglied: Biber
18.01.2007 um 22:41 Uhr
@bastla
Da hab ich wohl nicht den richtigen Tag erwischt...
Doch, schon okay... ich fand es ja auch lustig mit dem Rollentausch.

Ich war ja nur ein wenig angefressen, weil ich eigentlich unter einer ganz anderen Fragestellung hier in den Thread eingestiegen war... die dann anscheinend doch ganz spontan zugunsten einer anderen, die ja auch irgendwie mit Computern zu tun hat, aufgegeben wurde.

Wahrscheinlich kamen da Erinnerungen an meine Ex-Schwiegermutter hoch.
Die hat auch immer -unabhängig von meinen Antworten auf irgendwelche Fragen- immer gesagt "Ja." und dann unvermittelt bei vollkommen anderen Themen weitererzählt.

Aber was erzähl ich hier, dafür hab ich doch meine blutjungen rothaarigen Therapeutinnen...

Grüße
Biber
Bitte warten ..
Mitglied: Hannibal
19.01.2007 um 14:33 Uhr
Vielen Dank,
das VBSkript zum Drucken funktioniert genauso wie ich mir das ganze vorgestellt habe.
Das Skript für die Auflistung der Datein funktioniert nach ein wenig umändern auch so wie ich das wollte (sollte nämlich nur die Dateinamen auflisten ohne Pfad).

Sry, dass ich einfach so mit einem ganz andren Thema angefangen habe aber ist bei mir so ein Problem, dass ich nicht lange beim selben Thema bleiben kann, soll aber nicht heißen, dass das erste Thema scho für mich abgschlossen war.
Hätte vielleicht einfach einen neuen Beitrag verfassen sollen wäre wahrscheinlich sinnvoller gewesen.
Trotzdem vielen Dank und sry, dass ich mich erst jetzt wieder melde, die Woche war etwas stressig.

Auch ein schönes Wochenende

Dominik
Bitte warten ..
Mitglied: Biber
19.01.2007 um 16:29 Uhr
Danke für die Rückmeldung, Bader,

aber hier muss ich noch mal nachfragen:

das VBSkript zum Drucken funktioniert genauso wie ich mir das ganze vorgestellt habe

Ich vermute, Du meinst jetzt das Skript von bastla.
Kann Du nochmal kurz was zu dem Problem mit dem ersten, PrintADoc.vbs, sagen bitte.
Gab es da eine Fehlermeldung oder gar keine sichtbare Reaktion?

Schönes Wochenende

Biber
Bitte warten ..
Mitglied: Hannibal
19.01.2007 um 18:18 Uhr
Das Skript bringt immer nur das Echo, also die Box mit "Syntax: PrintADoc.vbs Worddatei.doc [Druckername]".
Ich weiß nicht wie ich denn Pfad und *.doc mitgeben soll.

Mit freundlichen Grüßen
Dominik
Bitte warten ..
Mitglied: Biber
19.01.2007 um 18:39 Uhr
Moin Bader,

Du kannst einem VBS-Skript auf mehrere Arten einen Parameter mitgeben.

Wenn Du über den Explorer mit der Maus ein Worddokument auf das VBS-Skript ziehst, sollte es ebenso klappen wie aus den Batch heraus mit (siehe oben)
01.
::--irgendwo in einem Batch 
02.
... 
03.
cscript //nologo f:\VBS_Beispiele\PrintADoc.vbs "f:\jokes\StoibersGedichte.doc" 
04.
... 
05.
----- oder genauso von CMD-Prompt aus. 
06.
 
07.
1) "cscript //nologo " ----> das musst auch Du schreiben 
08.
2)......."f:\VBS_Beispiele\PrintADoc.vbs" --->ist der Pfad zu meinem Skript.  
09.
Du hast es vielleicht unter "C:\Windows" gespeichert und vielleicht als Word-Drucken.vbs 
10.
Dann eben "C:\windows\Word-Drucken.vbs" 
11.
3) und dann der Pfad und Name der *.doc-Datei
Wenn Du mehrere *.doc-Dateien drucken willst, dann kannst Du es in eine For-Schleife packen.
01.
for %i in (Rechnung2006*.doc) do Cscript //nologo Word-Drucken.vbs "%i" 
02.
-oder, Dein Eröffnungsbeispiel in einem Batch, also mit 2 %-Zeichen vor der Zählvariablen - 
03.
if exist A:\*.doc for %%i in (A:\*.doc) do Cscript //nologo Word-Drucken.vbs "%%i"
...aber gedacht ist es schon für den gezielten Druck einzelner Word-Docs.

Der zweite, optionale Parameter [Druckername] kann, aber muss nicht angegeben werden.
Wenn Du den nicht eingibst, wird der Windows-Standarddrucker genommen.

HTH Biber
Bitte warten ..
Mitglied: Hannibal
19.01.2007 um 19:43 Uhr
Sers Biber,

ah ich hab immer versucht die Parameter mit in das VBS mit einzubaun ist mir aber nicht gelungen.
Aber jetzt kommt der Fehler wenn ich einen Ordner draufziehe

Zeile: 10
Zeichen: 1
Fehler: Index außerhalb des gültigen Bereichs
Code: 800A0009
Quelle: Laufzeitfehler in Microsoft VBScript

Im Cmd bringt er so ziemlich das selbe.

Mit freundlichen Grüßen
Dominik
Bitte warten ..
Mitglied: bastla
19.01.2007 um 19:48 Uhr
Hallo Dominik!

Ersetze in der Zeile
01.
If WScript.Arguments.Count = 1 Then
das "=" durch ein ">".

Grüße
bastla
Bitte warten ..
Mitglied: Biber
19.01.2007 um 20:03 Uhr
Thx bastla,

....oder durch
01.
If WScript.Arguments.Count = 2 Then 
02.
....
Wieso ich den wieder übersehen habe...*tztz

Schönes und baldiges Wochenende
Biber
Bitte warten ..
Mitglied: bastla
19.01.2007 um 20:12 Uhr
@Biber

... könnte mir nie passieren (und schon überhaupt nicht bei "Bit-HerumWerf-Decodier-Scripts")

Ich hab' ja Verständnis dafür, dass seinerzeit noch jedes Byte Speicher nutzbringend ausgefruchtet werden musste und die Offsets / Indizes eben nullbasiert verwendet wurden, aber dass man/frau/kind sich heute noch damit herumschlagen muss ...

Schönes Wochenende
bastla
Bitte warten ..
Mitglied: Hannibal
20.01.2007 um 16:40 Uhr
Hallo zusammen,
habs geändert, bloß leider kommt immer noch der selbe fehler habs mit beiden Änderugen versucht. Hab auch beide Möglichkeiten also übers CMD starten und mit Ordner direkt drauf ziehnversucht.
Aber zum Glück hab ja ich scho eine Lösung die super funktioniert mit der ich arbeiten kann.


Mit freundlichen Grüßen
Dominik Bader
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Microsoft Office
Word 2013, Seitenbereich drucken (3)

Frage von thaefliger zum Thema Microsoft Office ...

Batch & Shell
Batch: Word Datei kopieren und umbennen (9)

Frage von ExcelNoob177 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...