a32w3r
Goto Top

Per Powershell Pdfs drucken und verschieben: Fehlersuche

Hallo,
Ich habe mir als Anfänger eine einfache Lösung zusammengesucht, mit der ich pdfs aus einem Ordner "zudrucken" mit dem Standardprinter ausdrucke und die Datei danach in den Ordner "gedruckt" verschieben möchte.
Dabei handelt es sich um Email-Anhänge, die mittels Erweiterung in Thunderbird dort gespeichert werden sollen

Leider funktioniert bisher nur der erste Teil, für die Lösung des zweiten reicht mein Fachwissen leider nicht aus.
Das ist das fragliche Skript:

Dir "C:\Users\A*\Desktop\Auto-Druck\zudrucken\*.pdf" | Foreach-Object {Start-Process -FilePath $_.FullName-Verb Print | move-item $_.FullName -destination 'C:\Users\A*\Desktop\Auto-Druck\gedruckt'  -EV err -EA SilentlyContinue}  

Getestet habe ich auch schon

Dir "C:\Users\A*\Desktop\Auto-Druck\zudrucken\*.pdf" | Foreach-Object {Start-Process -FilePath $_.FullName-Verb Print | Move-Item -Path C:\Users\A*\Desktop\Auto-Druck\zudrucken\*.pdf -Destination C:\Users\A*\Desktop\Auto-Druck\gedruckt}  

Bei beiden wird das Dokument gedruckt, die Datei bleibt dann aber wo sie ist, während Move-Item beispielsweise für sich wunderbar funktioniert hat.

Wichtig ist mir auch, dass das ganze bei mehreren Dateien einigermaßen zuverlässig funktioniert.

Kann mir jemand dabei helfen?

Content-Key: 63272101874

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

Printed on: May 5, 2024 at 01:05 o'clock

Mitglied: 7907292512
7907292512 Aug 19, 2023 at 14:10:29 (UTC)
Goto Top
Erstens, eine geöffnete Datei durch den Druck kannst du nicht sofort verschieben, du musst warten bis sie durch den Prozess wieder freigegeben ist, guckst du hier rein

PDF via Powershell drucken - Reader nach druck schließen

Des weiteren macht es keinen Sinn die Ausgabe von Start-Process an Move-Item zu übergeben das sind zwei völlig unterschiedliche Objekttypen das eine ist ein Prozess das andere erwartet ein Dateisystemobjekt/pfad.

Gruß siddius
Member: em-pie
em-pie Aug 19, 2023 at 12:01:57 (UTC)
Goto Top
Moin,

Und baue hier $_.FullName-Verb mal noch vor dem -Verb ein Leerzeichen ein!

Ferner: nutze hier im Board mal die Code-Tags für den Quellcode
Member: A32W3R
A32W3R Aug 19, 2023 at 15:17:44 (UTC)
Goto Top
Also ungefähr so, oder?

Dir "C:\Users\A*\Desktop\Auto-Druck\zudrucken\*.pdf" | Foreach-Object {Start-Process -FilePath $_.FullName- Verb Print  

get-process $pdfApp -ErrorAction SilentlyContinue | Stop-Process

move-item $_.FullName -destination 'C:\Users\A*\Desktop\Auto-Druck\gedruckt'  -EV err -EA SilentlyContinue  

Ist das so richtig mit den Code-Tags?
Mitglied: 7907292512
7907292512 Aug 19, 2023 at 15:46:33 (UTC)
Goto Top
Also ungefähr so, oder?
Nöp. schaus dir nochmal genauer an, Wochenende ist ja noch lang.
Member: em-pie
em-pie Aug 19, 2023 at 15:53:29 (UTC)
Goto Top
2 Fehler hast du in jedem Fall

#Leerzeichen
#GeschweifteKlammern
Member: A32W3R
A32W3R Aug 19, 2023 at 16:07:40 (UTC)
Goto Top
Missversteht mich nicht. Ich erstelle dieses Script nicht (nur) weil ich Spaß daran habe meine Probleme mit selbstgebastelten Programmen zu lösen.
Ich bin hier komplett fachfremd und kenne auch niemanden, der das nicht ist und mir helfen kann.

Ich würde auch gerne ein fertiges Programm herunterladen und meine Zeit anders nutzen.
Darum gehts mir hier: Ich bekomme eine steigende Zahl an Dokumenten zugemailt, die ich, da das Büro unseres kleinen Familienbetriebs noch nicht papierlos arbeiten kann, alle ausdrucken muss. Das kostet immer mehr Zeit, die entweder von meiner Freizeit oder der Zeit für die "eigentliche" Arbeit abgeht. Dazu kommt, dass hier noch zwei andere mit den Dokumenten arbeiten müssen, die wenig bis gar nichts mit Computern anfangen können. Dann heißt es: "Hast du schon dies oder das ausgedruckt", oder "Das hat X doch schon gemacht, das habe ich jetzt doppelt".

Deswegen, mangels erschwinglicher Softwarelösungen, die das gewünschte bereits können, versuche ich mich jetzt hieran.
Also, wenn es für euch hier auf einen Blick ersichtlich ist, weshalb mein "Werk" nicht funktionieren kann, bitte ich um Auflösung, mir geht es nicht um den Lerneffekt.
Member: A32W3R
A32W3R Aug 19, 2023 at 16:10:31 (UTC)
Goto Top
So besser? Das Leerzeichen finde ich nicht

Dir "C:\Users\A*\Desktop\Auto-Druck\zudrucken\*.pdf" | Foreach-Object {Start-Process -FilePath $_.FullName- Verb Print}  

get-process $pdfApp -ErrorAction SilentlyContinue | Stop-Process

move-item $_.FullName -destination 'C:\Users\A*\Desktop\Auto-Druck\gedruckt'  -EV err -EA SilentlyContinue  
Mitglied: 7907292512
Solution 7907292512 Aug 19, 2023 at 17:44:22 (UTC)
Goto Top
Get-ChildItem "C:\Users\A*\Desktop\Auto-Druck\zudrucken\*.pdf" -File  | %{    
    $pdfApp = start-process $_.FullName -Verb "print" -PassThru  
    sleep(3)
    while($true){move-item $_.FullName -destination "C:\Users\A*\Desktop\Auto-Druck\gedruckt" -EV err -EA SilentlyContinue; If($err){sleep(1)}else{break}}  
}
$pdfApp | Stop-Process
Member: A32W3R
A32W3R Aug 20, 2023 at 08:22:06 (UTC)
Goto Top
Vielen Dank, das funktioniert!