dani75ch
Goto Top

pdf - Dateien aus Netzwerkordner in bestimmter Reihenfolge ausdrucken

Hallo zusammen

Wir bekommen von einem Kunden dreimal täglich Lieferscheine und dazugehörende Listen und Barcodes in einen Netzwerkordner übermittelt. Dabei handelt es sich um 100 bis 200 Dateien. Aktuell werden alle Dateien unter Windows 10, 8 und 7 manuell (nacheinander) in der richtigen Reihenfolge ausgedruckt. Dies ist extrem Zeitaufwändig, da sich die Dateien nicht einfach aufsteigend oder absteigend sortieren lassen. Die Formatierung des Dateinamens ist immer gleich und sieht wie folgt aus:

1. Datei: OWRLS_111356789.pdf
2. Datei: OWRELS_111356789.pdf
3. Datei: OWRETI_111356789.pdf

Bei der ersten Datei handelt es sich um den Lieferschein. Die zweite und die dritte die sind jeweils zugehörig zur ersten Datei. Dies heisst aber nicht dass immer die zweite und dritte Datei vorhanden ist. Die Zahl nach dem Tiefstrich ist jeweils die selbe für die erste, zweite und die dritte Datei. Ausserdem ist diese Zahl fortlaufend.

Nun um die ganze Sache einfach sortiert ausdrucken zu können, habe ich mir folgendes überlegt: man könnte die Buchstaben und den Tiefstrich durch eine Zahl oder einen Buchstaben am Ende der fortlaufenden Zahl ersetzen. So könnte man die ganze Sache einfacher sortieren. Was man sortiert hat, sollte man eigentlich auch in der richtigen Reihenfolge ausdrucken können. Auch wenn Windows das von Haus aus nicht beherrscht.

Die Dateinamen müssten also wie folgt umformatiert werden können:

1. Datei: OWRLS_111356789.pdf nach 111356789A.pdf
2. Datei: OWRELS_111356789.pdf nach 111356789B.pdf
3. Datei: OWRETI_111356789.pdf nach 111356789C.pdf

Nun könnte man diese Dateinamen Sortiert auf dem Standarddrucker ausdrucken.

Leider bin ich nich so versiert in Sachen Script und Batch-Dateien. Könnte man für diesen Vorgang vom Umformatieren und in der richtigen Reihenfolge ausdrucken in einer Batch-Datei oder in einem Script automatisieren? Suchen und Ersetzen von Teilen des Dateinamen ist wahrscheinlich nicht das Problem. In diesem Fall muss ja gesucht, gelöscht und angehängt werden. Und dies in Abhängigkeit des Dateinamenanfangs. Funktionieren sollte es ab Windows 8.

Hat irgend wer von euch eine Idee, wie ich das Problem lösen könnte? Besten Dank schon mal für eure Hilfe.

Content-Key: 504703

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

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: falscher-sperrstatus
falscher-sperrstatus 14.10.2019 um 21:25:17 Uhr
Goto Top
Schönen Abend,

Ihr bekommt von euren Kunden Lieferscheine? Warum lässt du nicht in einem gewissen Turnus einen Job drüber laufen Suche alle Dateien mit Nummer xx und druck erst owrls dann owrels und dann owreti aus?

Dazu muss man in batch nicht sonderlich versiert sein. Im Zweifel Google und paar Minuten

VG
Mitglied: dani75ch
dani75ch 14.10.2019 um 22:20:47 Uhr
Goto Top
Das Problem ist, die entsprechende Nummer ist zum vornherein nicht bekannt. Meiner Meinung nach müsste die Nummer bekannt sein, dass das funktionieren könnte. Oder mache ich hier einen Überlegungsfehler?
Danke für deine Hilfe.
Mitglied: manuel-r
manuel-r 14.10.2019 um 22:26:21 Uhr
Goto Top
Nach folgendem Schema sollte es funktionieren:
  • alle Dateien auflisten die mit OWRLS beginnen
  • im Ergebnis bei allen Einträgen das OWRLS entfernen
  • das Ergebnis aufsteigend sortieren
  • für jeden Wert im Ergebnis prüfen, ob eine entsprechende OWRLS-/OWRELS-/OWRETI-Datei vorhanden ist und wenn ja ausdrucken

Mit Powershell kein Problem

PS:
Wieso ihr von Kunden Lieferscheine bekommt ist mir allerdings auch nicht ganz klar.

Manuel
Mitglied: SeaStorm
SeaStorm 14.10.2019 aktualisiert um 22:30:02 Uhr
Goto Top
Hi
Hat irgend wer von euch eine Idee, wie ich das Problem lösen könnte? Besten Dank schon mal für eure Hilfe.
Alle Dateinamen nehmen, in ein Array laden, den Kram bis inkl. dem unterstrich wegwerfen, das Ergebnis gruppieren und dann in einer Schleife durch die nun jeweils 1x vorkommenden Zahlen laufen. In der Schleife einfach 3 DruckJobs hintereinander starten mit dem jeweiligen Prefix + Zahl
Mitglied: falscher-sperrstatus
falscher-sperrstatus 14.10.2019 um 22:33:47 Uhr
Goto Top
Davon ging ich nicht aus. Aber erleuchte uns doch erstmal wegen der Lieferschein Anomalie
Mitglied: em-pie
em-pie 14.10.2019 um 22:43:49 Uhr
Goto Top
Moin,

Zur LS Anomalie:

Es mag Konstrukt geben, da ist das Korrekt:
Wir sind teilweise als Lohnfertiger unterwegs. Unsere Kunden = Lieferanten wollen auch Lieferscheine der angelieferten Mengen per Mail erhalten, da nicht unser Kunde das Zeug zu uns schickt, sondern unser Kunde das Material direkt von seinem Lieferanten zu uns kommen lässt. Damit er (=unser Kunde) weiß, was angeliefert wurde (und er an seinen Lieferanten zahlen muss), senden wir unserem Kunden/ Lieferanten die Lieferscheine zu...

Etwas kurios, aber so ist das Manchmal...

Zur Umsetzung ist ja schon alles gesagt:
Den „Stamm“ aus der ersten Datei ermitteln, dann die dazugehörigen Dateien dazu suchen und danach: ab zum Drucker.


Gruß
em-pie
Mitglied: Crusher79
Crusher79 14.10.2019 um 22:44:45 Uhr
Goto Top
Fnde ich gut. Integer mittels regex o.ä. "freistellen" und unique sorteiren.

In die Schleife noch Existenzprüfung und gut ist.

Womit soll aber PDF gedruckt werden? Adobe macht ja GUI auf. Würde da FoxitReader nehmen oder den abgekündigten PDF-XChange Viewer.

Letzterer ist ein Leichgewicht und läd recht schnell.Grad bei 200 und mehr Dateien würd das Sinn machen. Nutze selber den PDF-XChange Viewer unter Windows 10 für PDF Preview und Druck im Hintergrund.

Ansonsten wäre deine Lösung auch mein Favorit.

mfg Crusher
Mitglied: beidermachtvongreyscull
beidermachtvongreyscull 14.10.2019 um 22:51:24 Uhr
Goto Top
Ich habe auf die Schnelle das hier gefunden:
http://www.columbia.edu/~em36/pdftoprinter.html

Das ist ein Wrapper-Script basierend auf AutoIt mit passendem Programm.

Vielleicht kannst Du diesen Ansatz für Dich weiterentwickeln.
Mitglied: manuel-r
manuel-r 14.10.2019 um 22:52:05 Uhr
Goto Top
Womit soll aber PDF gedruckt werden?

Sumatra macht das hervorragend per Kommandozeile. Und schnell ist er auch noch.

Manuel
Mitglied: falscher-sperrstatus
falscher-sperrstatus 14.10.2019 um 22:52:11 Uhr
Goto Top
Zitat von @Crusher79:

Fnde ich gut. Integer mittels regex o.ä. "freistellen" und unique sorteiren.


Da brauchst nichtmal nen Regex, split einfach nach " " oder "-" oder whatever und gut ist, der Grundaufbau scheint ja gleich zu bleiben. Interessant wird es, wenn das ein Riesenheckmeck ist (musste mal so eine Prozedur bei einem Wildwuchs ohne Konzept digitalisierter Rechtsanwaltsschreiben umsetzen...ging aber auch.)
Mitglied: Crusher79
Crusher79 14.10.2019 um 22:54:57 Uhr
Goto Top
Muss ich mir mal anschauen. Bei uns in der Klinik sind digitale Amöben am Start! Foxit mag ich, weil man mittels GPO und eigenen Menü das ding so kastrieren kann, dass nur ein paar Buttons über bleiben. Dank des Command Line Print nur 1x Software für mehrere Zwecke. Aber Sumatra schau ich mir für anderes Projekt auch mal an. ;)
Mitglied: SeaStorm
SeaStorm 14.10.2019 um 22:56:35 Uhr
Goto Top
Naja also PDF-Drucker gibt's ja wie Sand am Meer...
Mitglied: Crusher79
Crusher79 14.10.2019 um 22:59:13 Uhr
Goto Top
Auch war.

Btw: Wer opfert sich denn nun von uns??? Bin etwas müde, aber mit PS ist das Ding ja mehr ein Dreizeiler ;) Normal teste ich immer, was ich hier reinstelle.
Mitglied: SeaStorm
SeaStorm 14.10.2019 um 23:06:05 Uhr
Goto Top
Bin Bett am Handy.. also nö face-smile

Aber fragte ja auch nur nach Ideen, nicht nach fertiger Pasta
Mitglied: manuel-r
manuel-r 14.10.2019 um 23:06:55 Uhr
Goto Top
Btw: Wer opfert sich denn nun von uns???

Nicht vom Handy aus. Das ist mir zu mühselig. Außerdem habe ich die Parameter für Sumatra gerade nicht parat.
Mitglied: Crusher79
Crusher79 14.10.2019 aktualisiert um 23:31:39 Uhr
Goto Top
Hatte langeweile. Bauer sucht Frau vorbei.....

Fehlt noch statt "Get-Content " Druckaufruf und verschieben in Verzeichnis, damit nich immer die selben gedruckt werden.....

$ordner = "c:\temp\"  

gci -Path $ordner | ? {$_.BaseName -match "OWRLS"} | % {  

$sub = $_.BaseName.Substring(6)

$file2 = $ordner + "OWRETI_" + $sub + $_.Extension  
$file3 = $ordner + "OWRELS_" + $sub + $_.Extension  

if (Test-Path -Path $_.FullName) {Get-Content -Path $_.FullName}

if (Test-Path -Path $file2) {Get-Content -Path $file2}

if (Test-Path -Path $file3) {Get-Content -Path $file3}

}

Invoke-Command xxxxx.exe -ArgumentList arg1,arg2,arg3 -Wait


So mal angedacht.
Mitglied: 141320
141320 15.10.2019 aktualisiert um 04:27:28 Uhr
Goto Top
Gruppieren und sortieren ist ein Kinderspiel in der PS
Get-Childitem "d:\daten" -File -Filter *.PDF | group {$_.Basename.split("_")[1]} | %{  
    Write-Host "Drucke Gruppe $($_.Name)" -F Green  
    $_.Group | sort {@{OWRLS=1;OWRETI=2;OWRELS=3}[($_.Basename.split("_")[0])]} | %{  
        # Hier Druckbefehl einsetzen, in $_.Name befindet sich jeweils der Dateiname, in $_.Fullname der Absolute Pfad zur Datei
        # Für den Test nur Name der Datei ausgeben
        $_.Name
    }
}

Zum Druckbefehl noch Suche benutzen und fertig:
PDF via Powershell drucken - Reader nach druck schließen