jk23jk
Goto Top

Windows Poweshell Drucken-Verschieben von Dateien

Hallo Zusammen,

ich habe eine kurze und vermutlich für euch eine einfache Frage.
Ich möchte per Powershell X Dateien in einem Ordner Drucken und NACH dem Druck jeder einzelnen Datei die Datei verschieben.

Hintergrund wir schreiben PDF's in einen Ordner "Test"
Der Zeitpunkt wann die PDF's dort gespeichert werden ist nicht definiert - es kann also durchaus sein, dass neue PDF's hinzukommen in dem Moment wann das Script ausgeführt wird.)
Da ich vermeiden möchte, dass Dateien nicht ungedruckt verschoben werden würde ich das ganze gerne wie folgt ablaufen lassen.

Das Script geht in den Ordner in dem die PDF's liegen: C:\Test
Sucht dort nach der ersten PDF Datei und druckt diese auf dem Standard Drucker:
Sobald die Datei gedruckt ist verschiebt er sie nach C:\Test\Archiv
Und sucht nach der nächste Datei macht dort das gleiche ....
Solange bis er nichts mehr findet.

Das ist der Befehl der alle Dateien die er finde druckt:

Dir "C:\Test\*.pdf" | Foreach-Object {Start-Process -FilePath $_.FullName -Verb Print}

Vermutlich wird man eine Schleife starten die den Ersten "Eintrag" in eine variable einließt - druckt und verschiebt aber irgendwie bekomme ich das nicht hin :/
Ich muss auch ehrlicherweise gestehen das ich nicht gerade Vertraut bin mit Powershell.


Für jegliche Tipps und Hilfestellungen vielleicht sogar ein kleines Script wäre ich euch überaus dankbar.

Beste Grüße

Content-ID: 288216

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

Ausgedruckt am: 25.11.2024 um 12:11 Uhr

114757
114757 12.11.2015 um 11:17:41 Uhr
Goto Top
JK23JK
JK23JK 12.11.2015 um 11:28:47 Uhr
Goto Top
Ohja ich entschuldige mich für mein schlechtes Suchverhalten face-sad
Das hätet man auch selber finden können Danke....

zwei kurze Fragen nur.

zum einen funktioniert es nicht wenn ich den Standard Drucker wählen möchte ?

Und was muss ich tun wenn ich anstatt dem löschen die Dateien verschieben möchte ?

Entweder ich stehe auf dem Schlauch oder :/
114757
Lösung 114757 12.11.2015 aktualisiert um 11:54:00 Uhr
Goto Top
Zitat von @JK23JK:
zum einen funktioniert es nicht wenn ich den Standard Drucker wählen möchte ?
Keine Ahnung was du damit meinst und was bei dir nicht geht ohne Fehlermeldung ...
Und was muss ich tun wenn ich anstatt dem löschen die Dateien verschieben möchte ?
Das
del $_ -Force -EV err -EA SilentlyContinue
ersetzen durch ein
move-item $_.FullName -destination 'C:\deinzielpfad'  -EV err -EA SilentlyContinue
Entweder ich stehe auf dem Schlauch oder :/
... du hast die Hose voll face-smile
JK23JK
JK23JK 12.11.2015 um 11:56:50 Uhr
Goto Top
Keine Ahnung was du damit meinst und was bei dir nicht geht ohne Fehlermeldung ...

--> ich möchte das Script dem User zur Verfügung stellen, sodass er es eifnach doppelklickt und es wird gedruckt (wenn Daten vorhanden) er macht nichts wenn keine Daten vorhanden.

Da es unter umständen verschiedene User ausführen - würde ich gerne dem Script sagen - nimm nicht Drucker XY sondern nimm den Drucker den der User am ausführenden PC als Standard definiert hat ....

Dieser Befehl:
Dir "C:\Test\*.pdf" | Foreach-Object {Start-Process -FilePath $_.FullName -Verb Print}

nutzt den Standard Drucker --> wie muss ich diesen Verbauen oder ändern das er in "unserem" Script funktioniert ?

Hose gecheckt, alles gut :P
114757
Lösung 114757 12.11.2015 aktualisiert um 14:07:55 Uhr
Goto Top
den sleep-Wert musst du wahrscheinlich an den Speed eures System anpassen...je nachdem wie schnell euer Programm den Druck anstößt.
gci "C:\Ordner\*.pdf" | %{  
    $pdfApp = (start-process $_.FullName -Verb "print" -PassThru).ProcessName  
    sleep(3)
    while($true){
       move-item $_.FullName -destination 'C:\deinzielpfad'  -EV err -EA SilentlyContinue  
       If($err){sleep(1)}else{break}
    }
}
get-process $pdfApp -ErrorAction SilentlyContinue | Stop-Process