webdoktor
Goto Top

Script das PDF Dateien automatisch drucken und verschieben

Liebe Forum-Besucher

Ich habe eine kleine Frage. Wir haben auf einem Windows-Server ein Laufwerk P: gemappt in welchem
von einem System automatisch PDF Dateien abgelegt werden.

Nun brauche ich ein Script, welches z.B. alle 10 Sekunden in diesen Ordner schaut ob ein neues PDF
vorhanden ist. Falls es neue PDF's gibt soll das Script diese ausdrucken und danach in einen Ordner
verschieben.

Hat jemand eine Idee wie ich das am einfachsten anstellen kann? Ich denke, dass könnte man evt.
mit ein paar Zeilen Script lösen?

Ich wäre über jeden Tipp und Hilfe sehr dankbar!
Freue mich auf eure Antworten.

Grüsse Marco

Content-Key: 156484

Url: https://administrator.de/contentid/156484

Printed on: April 16, 2024 at 19:04 o'clock

Member: -bugg-
-bugg- Dec 07, 2010 at 09:34:02 (UTC)
Goto Top
Moin,

habe hier ein kleines Script mit dem du die PDF Dateien ausdrucken kannst: http://blog.sven-borkenhagen.info/?p=375
Verschieben würde ich die Dateien mit "move" einfach mal in die cmd "move /?" eingeben, da wirst du sicher was mit anfangen können.

Gruß
-bugg-
Member: bastla
bastla Dec 07, 2010, updated at Oct 18, 2012 at 16:44:19 (UTC)
Goto Top
Hallo Webdoktor!

Etwas in der Art hatten wir mal hier ...

Grüße
bastla
Member: Webdoktor
Webdoktor Dec 07, 2010 at 09:52:03 (UTC)
Goto Top
Hallo Bastla

Danke für Deine Antwort. Ich möchte es jedoch ohne STOP-Datei sondern wirklich ganz einfach.
Wenn eine Datei im Ordner liegt diese Ausdrucken und verschieben. Dass Script muss nicht
stoppen sondern immer laufen damit es immer überprüft, ob es eine neue Datei resp. neue
Dateien im Ordner hat.

Freue mich auf weitere Hilfe.

Grüsse Marco
Member: bastla
bastla Dec 07, 2010 at 09:58:19 (UTC)
Goto Top
Hallo Webdoktor!

Die "STOP"-Datei war ja nur als Option gedacht (wenn eine Datei dieses Namens im überwachten Ordner erstellt wird, beendet sich das Überwachungsscript) ...

Grüße
bastla
Member: Webdoktor
Webdoktor Dec 07, 2010 at 11:32:41 (UTC)
Goto Top
Hallo Bugg

Vielen Dank für Deine promote Antwort. Ich habe Dein Script nun mal so angepasst:

 
@echo off

:pdfprint

for %%p in ("C:\temppdf\*.pdf") do (  

"C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe" /p /h %%p  

ping 127.0.0.1 -n 5
move "%%p" "C:\temppdf_move\"  


)

ping 127.0.0.1 -n 5
goto pdfprint


Frage mich nur wie professionell das ist und ob das nicht eine riesen Last für den PC oder Server ist wenn das so den ganzen Tag läuft?
Dann habe ich noch eine Frage, es wäre nun ideal, wenn ich diese .bat Datei als Dienst laufen lassen könnte. Den Dienst habe ich mittels
sc eingerichtet also:

sc create „Testdienst“ start= auto binpath= „C:\Programme\Beispieldatei.exe“

Wenn ich den Dienst nun starte kommt folgende Meldung:
"fehler 1053 der dienst antwortete nicht rechtzeitig auf die start- oder steuerungsanforderung"

Weiss jemand wieso?

Freue mich auf eure Antworten.
Marco
Member: -bugg-
-bugg- Dec 07, 2010 at 12:15:42 (UTC)
Goto Top
Hi,

ich habe auch mal vor dem Problem gestanden, dass ich eine .bat Datei als Dienst laufen lassen wollte. Ich habe einfach die .bat Datei in eine .exe Umgewandelt (findet man zahlreiche Tools bei google). Und dann mittels instsrv.exe aus den Windows Server 2003 Resource Kit Tools den Dienst erstellt. http://www.serverhowto.de/Applikationen-als-Dienste-einrichten.228.0.ht ...

In wie weit das Professionell ist oder nicht war mir eigentlich egal weils funktioniert hat. face-smile

PS:Wenn du einen Dienst erstellst, dann läuft dieser mit dem Lokalen Systemkonto, was dazu führt das du damit keinen Zugriff auf evtl. Netzlaufwerke hast. War bei mir anfangs ein Problem auf das ich nicht gleich gekommen bin. Es gibt aber die möglichkeit ein anderes Konto einzutragen.

Grüße
-bugg-
Member: Webdoktor
Webdoktor Dec 07, 2010 at 12:32:03 (UTC)
Goto Top
Hallo Bugg

Danke für Deine Antwort. Ich habe folgendes Tool heruntergeladen und aus der .bat eine .exe gemacht:
http://www.abyssmedia.com/quickbfc/

Danach als Dienst eingerichtet und leider kommt die gleiche Fehlermeldung face-sad

Hast Du noch eine Idee?

LG Marco
Member: -bugg-
-bugg- Dec 07, 2010 at 13:02:00 (UTC)
Goto Top
Hi Marco,

probier mal dieser Programm zur Diensterstellung aus: http://www.pirmasoft.de/runassvc.php
Wichtig aber vorher den mit instsrv.exe erstellten Dienst entfernen mit "instsrv.exe "Dienstname" remove"
Schreib mal wenns geklappt hat.

Gruß
-bugg-
Member: Webdoktor
Webdoktor Dec 07, 2010 at 14:52:50 (UTC)
Goto Top
Hallo Bastla

Ich habe nun Dein Code angeschaut und momentan sieht er wie folgt aus und leider
klappt es noch nicht:

strFolder = "C:\temppdf" 'ohne abschließenden "\", auch bei Root-Folder  

strUserFolder = """" & Replace(strFolder, "\", "\\\\") & """"  
strComputer = "."  
Set fso = CreateObject("Scripting.FileSystemObject")  
Set objShell = CreateObject("Wscript.Shell")  
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
    ("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " _  
        & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _  
            & "TargetInstance.GroupComponent= " _  
                & "'Win32_Directory.Name=" & strUserFolder & "'")  

Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    strNewFile = objLatestEvent.TargetInstance.PartComponent
    arrNewFile = Split(strNewFile, "=")  
    strFileName = arrNewFile(1)
    strFileName = Replace(strFileName, "\\", "\")  
    strFileName = Replace(strFileName, Chr(34), "")  

    If strFileName = strFolder & "\STOP" Then  
        MsgBox "Überwachung von " & strFolder & " wird beendet."  
        WScript.Quit
    End If
    
    Select Case LCase(fso.GetExtensionName(strFileName))
    
    Case "doc" 'Typ in Kleinbuchstaben angeben  
        Set objWord = WScript.CreateObject("Word.Application")  
        With objWord
            .Documents.Open strFileName
            .ActiveDocument.PrintOut
            WScript.Sleep(0815)
            .ActiveDocument.Close
            .Quit
        End With
        Set objWord = Nothing
        
    Case "pdf" 'Typ in Kleinbuchstaben angeben  
        objShell.Run """C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe"" /p /h """ & strFileName & """"  

    Case Else
        ' keine Aktion erforderlich  

    End Select
    
Loop

wenn ich die test.vbs doppelklicke passiert nichts. was muss ich da machen?

Danke für Dein Hilfe.
Marco
Member: Biber
Biber Dec 07, 2010 at 16:53:48 (UTC)
Goto Top
Moin webdoktor,

Zitat von @Webdoktor:
wenn ich die test.vbs doppelklicke passiert nichts. was muss ich da machen?
Hmmmm... naheliegend wäre die Idee, alle paar Zentimeter mal ein WScript.echo "hallo, bis Zeile 15 bin ich gekommen" einzufügen.

Denselben Rat werden dir bestimmt auch andere Forumsmitglieder geben wollen, aber eventuell etwas schroffer formuliert.

Um Unheil abzuwenden deshalb dieser Tipp.

Grüße
Biber

P.S. Natürlich nicht bei jedem WScript.echo ein "Zeile 15" reinschreiben. Copy & Paste ist in diesem Fall nicht zeitsparend.
Member: bastla
bastla Dec 07, 2010 at 17:16:08 (UTC)
Goto Top
Hallo Webdoktor!
wenn ich die test.vbs doppelklicke passiert nichts.
Das mag ich eigentlich nicht glauben - und ein Blick in den Taskmanager auf die laufenden Prozesse oder ein "tasklist" an der Kommandozeile sollten Dir zeigen, dass ein "wscript"-Prozess läuft ...
was muss ich da machen?
... allerdings ist diesem Prozess ziemlich langweilig, wenn im Ordner "C:\temppdf" keine ".pdf"-Dateien ankommen - daher vielleicht einmal die eine oder andere (auch per Drag & Drop möglich) hineinkopieren (und etwas Geduld aufbringen, da nur alle 10 Sekunden - siehe Zeile 9 - auf "Neuankömmlinge" geprüft wird face-wink).

Ansonsten könntest Du natürlich Bibers Vorschlag aufgreifen und zur Vereinfachung die Zeile 41 auf
WScript.Echo """C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe"" /p /h """ & strFileName & """"
ändern - es sollte dann für jede neue ".pdf"-Datei der Programmaufruf (nur) angezeigt werden.

Grüße
bastla
Member: Webdoktor
Webdoktor Dec 08, 2010 at 07:52:03 (UTC)
Goto Top
Lieber Bastla & Biber

Vielen Dank für Deine Antwort. Ich sehe nun, dass der Prozess läuft also das wscript finde ich im Taskmanager.
Leider funktioniert das Script aber immer noch nicht obwohl ich eine PDF Datei in den Ordner C:\temppdf kopiere.

Ich habe z.B. in Zeile 15 ein

msgbox ("hier")  

hinzugefügt um es zu kontrollieren ob es überhaupt in diese Schlaufe geht. Leider wir diese MsgBox gar nicht
angezeigt. Hast Du eine Idee wieso?

Freue mich auf Deine / Eure Antworten.
Marco
Member: Webdoktor
Webdoktor Dec 09, 2010 at 12:54:24 (UTC)
Goto Top
Hallo zusammen

Ich schaffe es leider einfach nicht. Kann mir nicht jemand helfen. Wäre sehr dankbar!

Liebe Grüsse
Marco
Member: -bugg-
-bugg- Dec 09, 2010 at 14:43:27 (UTC)
Goto Top
Die Version die ich dir vorgeschlagen hab funktioniert doch. Was spricht dagegen?
Member: bastla
bastla Dec 09, 2010 at 15:00:36 (UTC)
Goto Top
Hallo Webdoktor!
Kann mir nicht jemand helfen.
Da das Script so wie von Dir gepostet bei mir funktioniert, fehlt mir leider ein Ansatzpunkt ... face-sad

Grüße
bastla