rockett
Goto Top

PDF Dateien automatisch Zusammenführen per Batch

Hallo Zusammen,

ich habe hier einige Beiträge gelesen aber aus keinem geschafft die Batch Datei für mich anzupassen. Deshalb muss ich leider einen neuen Beitrag eröffnen, sorry dafür face-sad

Also möglichst kurze Beschreibung von dem was ich vorhabe:

Ich fange mal mit der Ordnerstruktur an glaube dann kann ich es besser erklären.

C:/Peter/RGNR0101/eg_rg.pdf (immer vorhanden)
C:/Peter/RGNR0101/dl1_rg.pdf (immer vorhanden)
C:/Peter/RGNR0101/dl2_rg.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/dl3_rg.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/dl4_rg.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/dl5_rg.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/ln1.pdf (immer vorhanden)
C:/Peter/RGNR0101/ln2.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/ln3.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/ln4.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/ln5.pdf (nicht immer vorhanden)

1. Diese Dateien sollen, sofern vorhanden, genau in dieser Reihenfolge zusammen geführt werden.
2. Die neue PDF Datei soll den Namen des Ordners bekommen
3. Dann soll die neue PDF Datei in den Ordner C:/Peter verschoben werden
4. Der Ordner mit den einzelnen Dateien soll dann in C:/archiv verschoben werden.

5. Am liebsten soll das soweit automatisch sein das erkannt wird ob ob im Ordner C:/Peter ein neuer Ordner vorhanden ist und das dieses Script dann für alle Ordner ausgeführt wird.

Ich hoffe ihr könnt mir helfen, mein Zeitmanagement ist total verschossen durch diese ganze PDF zusammenführerei face-smile Mir kommt es so vor als würde ich nichts anderes tun als PDF Dateien zusammen zu fügen face-sad

Ich würde dafür dann gerne PDFtk nutzen. Hatte ja schon einige Beiträge gelesen und damit ist ja wohl einiges realisierbar.

Ich freue mich auf eure Antworten
Rockett

Content-Key: 427328

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

Printed on: April 27, 2024 at 13:04 o'clock

Member: H41mSh1C0R
H41mSh1C0R Mar 11, 2019 at 10:23:29 (UTC)
Goto Top
Member: NetzwerkDude
NetzwerkDude Mar 11, 2019 updated at 11:43:27 (UTC)
Goto Top
Wie immer bei größeren Aufgaben bei denen man nicht weiterkommt: Das Problem teilen:

Hier sind es zwei:
1. Die Reihenfolge ist "beliebig" und nicht alphabetisch oder sonstwie geordnet ("eg_rg.pdf" passt nicht so recht in kein geordnetes schema)
2. Wie benutze ich die Kommandozeile von PDFtk?

Mein Problem ist das ich kein Windows System zu Hand habe face-smile
Daher die Lösung in Bash: (setz dir dafür schnell ne Linux VM auf, schadet sowieso nie)

1. Reihenfolge:
Da alle Dateien alphanumerisch zu ordnen sind, bis auf eg_rg, behandeln wir es extra, indem wir im Aktuellen Order nur diese Datei finden und in eine Variable namens "first" schreiben:
first=$(find . -path '*eg_rg*')  

Die anderen PDFs lassen sich zum glück sortieren, daher suchen wir alle Dateien die NICHT eg_rg sind und sortieren diese alphanumerisch (default von sort), schreiben das ergebnis in eine zweite variable namens $sorted:
sorted=$(find . -type f ! -path '*eg_rg.pdf' | sort)  

2. Automatisiert zusammenführen:
Unter Ununtu sind die sog. "poppler-utils" schon vorinstalliert, und die Syntax für das Mergen ist sehr einfach:
pdfunite datei1.pdf datein.pdf ausgabe.pdf
Daher lassen wir PDFtk aus dem Spiel und nutzen pdfunite (teil der poppler-utils)
Da wir alle Dateinamen in Variablen schon haben:
pdfunite $first $sorted merged.pdf

voilà

Edit: Die anderen Teile noch vergessen:
Den Namen vom Ordner kannst du mit basename bekommen
basename '/home/Peter/RGNR0101'  
liefert RGNR0101

Verschieben kann du mit mv
Member: Rockett
Rockett Mar 11, 2019 at 12:23:00 (UTC)
Goto Top
eg_rg.pdf lässt sich intern auch problemlos in aeg_rg.pdf umbenennen falls es das zum sortieren einfacher macht.

Dies muss die erste Seite werden:
C:/Peter/RGNR0101/aeg_rg.pdf

Diese danach, können aber unsortiert sein:
C:/Peter/RGNR0101/dl1_rg.pdf (immer vorhanden)
C:/Peter/RGNR0101/dl2_rg.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/dl3_rg.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/dl4_rg.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/dl5_rg.pdf (nicht immer vorhanden)

Diese am Schluss, können dann aber auch wieder unsortiert sein:
C:/Peter/RGNR0101/ln1.pdf (immer vorhanden)
C:/Peter/RGNR0101/ln2.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/ln3.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/ln4.pdf (nicht immer vorhanden)
C:/Peter/RGNR0101/ln5.pdf (nicht immer vorhanden)

Ich versuche mich gerade selber darin mit PDFtk was zu erstellen arbeite gerade das "Handbuch" durch da ich keine Ahnung von den Befehlen habe. Würde gerne verstehen was die ganzen Befehle tun die ich in diesen Forum bei PDFtk sehe. Dann kann ich die eventuell für mich passend umbauen.

Ich will nicht den Eindruck erwecken das ich zu Faul zum Googeln bin oder es selber zu machen. Dauert nur etwas und ich kann hier auch keine VM dafür aufsetzten, das wird mein Chef nicht zulassen. Musste schon durchboxen das ich versuche es zu Automatisieren.
Member: Rockett
Rockett Mar 11, 2019 updated at 13:02:36 (UTC)
Goto Top
EDIT: So ich habe mal meine Gedanken sortiert und wollte schauen ob ich das irgendwie selber schaffe, nur kenne ich die ganzen befehle und Syntaxse und co. nicht. Habe nicht die Hoffnung das ich das selbst bewerkstelligt bekomme. Kurze Beschreibung wie ich mir das jetzt vorstelle:

1. Feststellen ob es in "..\Peter" neue Ordner gibt.

2. Wenn nein = Stop

3. Wenn Ja = dann Dateien (am liebsten so sortiert wie ich es oben nochmal erwähne, die Dateien anders zu nennen wäre kein Problem wie ich oben schon sagte) zusammenfügen

4. Die neue PDF Datei sollte den Namen des Ordners tragen

5. Die Datei in wieder in den Übergeordneten Ordner verschieben.

6. Den Ordner ins Archiv verschieben damit die Batch Datei die Aktionen nicht mehrfach ausführt.


EDIT2:
Wohin was verschoben wird ist alles änderbar um es zu vereinfachen oder zu realisieren
Member: Kraemer
Kraemer Mar 11, 2019 updated at 15:15:27 (UTC)
Goto Top
Powershell

$Path='C:\Temp\'  
$Archive='C:\Temp\Archiv'  
$PdfTk='PfadZumProgramm'  


foreach ($Folder in Get-ChildItem -Path $Path -Directory){
    $FileList=@()

    if (Test-Path -Path (Join-Path -Path $Folder -ChildPath "aeg_rg.pdf")){  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "aeg_rg.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "dl?_rg.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "Ln?.pdf")  

        $MergedFile=Join-Path -Path $Path -ChildPath ((Split-Path -Path $Folder -Leaf)+".PDF")  

        $Argumentlist=($FileList -Join " ")+" cat output $MergedFile"  

        Start-Process -FilePath $PdfTk -Argumentlist $Argumentlist

        Move-Item -Path $Folder -Destination $Archive
    }
}

PS: Und wie immer bei fremden Code: Vorher Datensicherung machen!
Member: Rockett
Rockett Mar 12, 2019 at 07:41:03 (UTC)
Goto Top
Vielen Dank erstmal Kraemer für den Code.

Ich habe den jetzt mal für mich angepasst... und siehe da face-sad es passiert nichts. Die Console geht kurz auf, schließt sich wieder und es ist nichts passiert. Ich habe die Executionpolicy auch schon geändert von Powershell so wie google es mir vorschlug face-smile

hier ist der code:

$Path='C:\Peter\New\'  
$Archive='C:\Peter\Archiv\'  
$PdfTk='C:\PDFtk\bin\pdftk.exe\'  


foreach ($Folder in Get-ChildItem -Path $Path -Directory){
    $FileList=@()

    if (Test-Path -Path (Join-Path -Path $Folder -ChildPath "aeg_rg.pdf")){  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "aeg_rg.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "dl?_rg.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "Ln?.pdf")  

        $MergedFile=Join-Path -Path $Path -ChildPath ((Split-Path -Path $Folder -Leaf)+".PDF")  

        $Argumentlist=($FileList -Join " ")+" cat output $MergedFile"  

        Start-Process -FilePath $PdfTk -Argumentlist $Argumentlist

        Move-Item -Path $Folder -Destination $Archive
    }
}

Infos wo die Daten liegen:

PdfTk=C:\PDFtk\bin\pdftk.exe\

C:\Peter\new\P190111999\aeg_rg.pdf
C:\Peter\new\P190111999\dl1_rg.pdf
C:\Peter\new\P190111999\ln1.pdf
C:\Peter\Archiv\

Ich benötige nicht PDFtk Pro oder?
Member: Kraemer
Kraemer Mar 12, 2019 at 08:19:24 (UTC)
Goto Top
es passiert nichts.
glaube ich nicht.

1. https://docs.microsoft.com/de-de/powershell/scripting/components/ise/int ...

2. $PdfTk='C:\PDFtk\bin\pdftk.exe\' -> $PdfTk='C:\PDFtk\bin\pdftk.exe'
Member: Rockett
Rockett Mar 12, 2019 at 09:31:49 (UTC)
Goto Top
Leider ist das wirklich so face-smile Ich hänge mal ein Bild an von der Ausgabe in der Konsole und meiner Ordnerstruktur + PDF Dateien
ps_bild
Member: H41mSh1C0R
H41mSh1C0R Mar 12, 2019 at 09:47:22 (UTC)
Goto Top
Dann lasse dir doch mal in den Einzelschritten was ausschreiben mit z.B. write-host . =)

Um z.B. zu sehen ob er in deinen IF Zweig reingeht oder nicht.

VG
Member: Rockett
Rockett Mar 12, 2019 at 10:12:30 (UTC)
Goto Top
ich fühl mich gerade so unschlau face-smile Google seit 20 Minuten wie und wo ich write-host anwenden soll... finde aber nur Infos darüber wie write-host in andere Dateien schreibt face-sad von daher weiß ich nicht was genau du mir damit sagen willst face-sad
Member: H41mSh1C0R
H41mSh1C0R Mar 12, 2019 updated at 10:37:35 (UTC)
Goto Top
öhm

write-host "füge hier deine Variable ein"  

Diese Zeile liefert dir den Inhalt deiner Variable und schreibt das in die Ausgabe.

Wenn du das nun vor Schleifen, in Schleifen und nach Schleifen machst hast du einen Blick ob das was du willst da ankommt wo es soll.

Wenn du also keine Ausgabe bekommst liegt das vielleicht daran das deine IF Bedingung nicht greift.
Pack da eine Zeile rein oder in den Else Zweig (der noch nicht da steht) und du siehst wo im Code abgebogen wird. =)
Member: Kraemer
Kraemer Mar 12, 2019 at 10:39:45 (UTC)
Goto Top
nach dem $FileList=@() mal folgendes einfügen (neue Zeile)

Write-Host $Folder.FullName
Member: Rockett
Rockett Mar 12, 2019 at 10:45:34 (UTC)
Goto Top
hier ein bild der Ausgabe davon
ps_bild
Member: Rockett
Rockett Mar 12, 2019 at 11:19:44 (UTC)
Goto Top
Ich habe dieses write host mal als Else befehlt eingetragen... sofern ich das richtig gemacht habe kann man wohl sehen das die IF Bedingung wohl wirklich nicht greift: Siehe Bild
ps_bild
Member: Kraemer
Kraemer Mar 12, 2019 at 11:45:37 (UTC)
Goto Top
Gib mal da unten in dem schwarzen Denster direkt mal ein:

Test-Path -path "c:\Peter\New\P190111999\aeg_rg.pdf"  

Was kommt dabei raus?
Member: Rockett
Rockett Mar 12, 2019 at 11:48:12 (UTC)
Goto Top
true
Member: Kraemer
Kraemer Mar 12, 2019 at 11:51:10 (UTC)
Goto Top
Zitat von @Rockett:

true
Dann müsste zumindest ein Verzeichnis verschoben werden, oder eben eine Fehlermeldung geworfen..
Member: Rockett
Rockett Mar 12, 2019 updated at 11:55:19 (UTC)
Goto Top
aber wenn IF gar nicht ausgegeben wird sondern ELSE (warum auch immer und wo der fehler liegt) dann ist das doch normal das nichts passiert oder? Weil in deinem Code ja alles hinter der IF Bedingung steht oder?

Keine IF Bedingung erfüllt also keine Aktion aus der IF Bedingung ?

EDIT: Ja und keiner Fehlermeldung eventuell weil es ja "Kein Drama" ist wenn eine Bedingung nicht erfüllt wird... ELSE ist doch immer wenn es nicht definiert ist = NICHTS oder?
Member: Rockett
Rockett Mar 12, 2019 updated at 13:32:26 (UTC)
Goto Top
SO:

1. Habe das Script in den Ordner C:\Peter\New\ verschoben

2. Code mal Testweise geändert:
$Path='C:\Peter\New\'  
$Archive='C:\Peter\Archiv\'  
$PdfTk='C:\PDFtk\pdftk.exe'  


foreach ($Folder in Get-ChildItem -Path $Path -Directory){
    $FileList=@()

    

    if (Test-Path -Path (Join-Path -Path $Folder -ChildPath "aeg_rg.pdf")){  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "aeg_rg.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "dl?_rg.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "Ln?.pdf")  

        $MergedFile=Join-Path -Path $Path -ChildPath ((Split-Path -Path $Folder -Leaf)+".PDF")  

        $Argumentlist=($FileList -Join " ")+" cat output $MergedFile"  

        Start-Process -FilePath $PdfTk -Argumentlist $Argumentlist

        Move-Item -Path $Folder -Destination $Archive
    }
    
    else {Move-Item -Path $Folder -Destination $Archive}
}

Siehe da das Ordner verschieben jetzt, da es in ELSE steht. Hat aber aus anderen Ordnern bzw vom Desktop heraus nicht funktioniert.

3. Habe die Zeile die ich hinzugefügt habe wieder entnommen und auch aus dem Ordner NEW ausgeführt. Alle Ordner werden verschoben in denen mindestens die "aeg_rg.pdf" vorhanden ist. Was erstmal kein Problem darstellt da genau diese Datei IMMER da sein wird.

Aber leider verschiebt er nur und erstellt keine PDF Datei


EDIT:
Mist ich weis nicht was ich eben geändert habe.. hatte etwas rum probiert... da wurde mir dann die PDF erstellt. Aber jetzt nicht mehr...
ich hatte bei einen der 2 PDF namen was leicht geändert weil ich die Datei namen ändern wollte. Dabei habe ich nicht gemerkt das aeg_rg.pdf 2 mal in dem Code hinterlegt ist und ihn bei nur einer der Zeilen auf ich glaube: aeg_rg_?.pdf geändert

  if (Test-Path -Path (Join-Path -Path $Folder -ChildPath "aeg_rg.pdf")){  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "aeg_rg.pdf")  
Member: Rockett
Rockett Mar 12, 2019 updated at 13:48:15 (UTC)
Goto Top
Ich habs! Also nicht ganz... das es geklappt hat hatte gar nichts damit zutun das ich die Datei namen ändern wollte. Sondern das es die selben Ordner im Archiv schon gab. wenn also die selben Ordner im Archiv schon vorhanden sind (was normal nicht der Fall ist aber zur Lösung des Problems beitragen könnte) dann erstellt er die PDF Dateien!

Hilft das? face-smile

Achja und dann gibt es folgendes noch aus:

Move-Item : Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist.
In C:\Peter\New\Douglas.ps1:22 Zeichen:9
+         Move-Item -Path $Folder -Destination $Archive
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\Peter\New\P190111999:DirectoryInfo) [Move-Item], IOException
    + FullyQualifiedErrorId : MoveDirectoryItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
 
Move-Item : Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist.
In C:\Peter\New\Douglas.ps1:22 Zeichen:9
+         Move-Item -Path $Folder -Destination $Archive
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\Peter\New\Test:DirectoryInfo) [Move-Item], IOException
    + FullyQualifiedErrorId : MoveDirectoryItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand


EDIT:

Nur zur Info so sieht der Code aktuell aus:

$Path='C:\Peter\New\'  
$Archive='C:\Peter\Archiv\'  
$PdfTk='C:\PDFtk\pdftk.exe'  


foreach ($Folder in Get-ChildItem -Path $Path -Directory){
    $FileList=@()

    

    if (Test-Path -Path (Join-Path -Path $Folder -ChildPath "aeg_rg_?.pdf")){  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "aeg_rg_?.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "dl?_rg.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "Ln?.pdf")  

        $MergedFile=Join-Path -Path $Path -ChildPath ((Split-Path -Path $Folder -Leaf)+".PDF")  

        $Argumentlist=($FileList -Join " ")+" cat output $MergedFile"  

        Start-Process -FilePath $PdfTk -Argumentlist $Argumentlist

        Move-Item -Path $Folder -Destination $Archive
    }
    
    
}


EDIT: Also nen Workaround (bestimmt bekomme ich gleich Schläge von allen Seiten weil das kein sauberer Weg ist hehe) was ich allerdings etwas blöd finden würde wäre:

Schritt 1:
Wenn der Code erstmal den Ordner ins Archiv kopieren würde und somit das spätere Verschieben ersetzten würde, dann nach dem erstellen der PDF Dateien den Ordner aus NEW nicht verschieben sondern löschen würde.
Member: Kraemer
Kraemer Mar 12, 2019 at 13:43:04 (UTC)
Goto Top
Zitat von @Rockett:

SO:

1. Habe das Script in den Ordner C:\Peter\New\ verschoben
da ich nur mit absoluten Pfaden arbeite uninteressant

2. Code mal Testweise geändert:
Siehe da das Ordner verschieben jetzt, da es in ELSE steht. Hat aber aus anderen Ordnern bzw vom Desktop heraus nicht funktioniert.
logisch, da die Bedingung nicht erfüllt wird

3. Habe die Zeile die ich hinzugefügt habe wieder entnommen und auch aus dem Ordner NEW ausgeführt. Alle Ordner werden verschoben in denen mindestens die "aeg_rg.pdf" vorhanden ist. Was erstmal kein Problem darstellt da genau diese Datei IMMER da sein wird.
Das ist kein Problem - das ist eine gewollte Vorsichtsmaßnahme

Aber leider verschiebt er nur und erstellt keine PDF Datei


EDIT:
Mist ich weis nicht was ich eben geändert habe.. hatte etwas rum probiert... da wurde mir dann die PDF erstellt. Aber jetzt nicht mehr...
ich hatte bei einen der 2 PDF namen was leicht geändert weil ich die Datei namen ändern wollte. Dabei habe ich nicht gemerkt das aeg_rg.pdf 2 mal in dem Code hinterlegt ist und ihn bei nur einer der Zeilen auf ich glaube: aeg_rg_?.pdf geändert
wenn du ohne den Hauch einer Ahnung die Bedingungen änderst, kann ich mir hier Mühe geben ohne Ende - es wird zwecklos sein.
Member: Kraemer
Kraemer Mar 12, 2019 at 13:46:31 (UTC)
Goto Top
Zitat von @Rockett:

Ich habs! Also nicht ganz... das es geklappt hat hatte gar nichts damit zutun das ich die Datei namen ändern wollte. Sondern das es die selben Ordner im Archiv schon gab. wenn also die selben Ordner im Archiv schon vorhanden sind (was normal nicht der Fall ist aber zur Lösung des Problems beitragen könnte) dann erstellt er die PDF Dateien!

Hilft das? face-smile
du hast mit keiner Silbe erwähnt, dass das das Archiv überschrieben wird / werden kann!

Achja und dann gibt es folgendes noch aus:

Move-Item : Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist.
> In C:\Peter\New\Douglas.ps1:22 Zeichen:9
> +         Move-Item -Path $Folder -Destination $Archive
> +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     + CategoryInfo          : WriteError: (C:\Peter\New\P190111999:DirectoryInfo) [Move-Item], IOException
>     + FullyQualifiedErrorId : MoveDirectoryItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand
>  
> Move-Item : Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist.
> In C:\Peter\New\Douglas.ps1:22 Zeichen:9
> +         Move-Item -Path $Folder -Destination $Archive
> +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     + CategoryInfo          : WriteError: (C:\Peter\New\Test:DirectoryInfo) [Move-Item], IOException
>     + FullyQualifiedErrorId : MoveDirectoryItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand

ach ne - sagte ich das nicht gleich!


EDIT:

Nur zur Info so sieht der Code aktuell aus:
du hast NUR den Dateinamen geändert! Und du wunderst dich, dass das mein Code nicht auf Anhieb funktioniert?

Was für eine Zeitverschwendung.
Member: Rockett
Rockett Mar 12, 2019 at 13:52:03 (UTC)
Goto Top
Ich habe natürlich auch die echten Dateien umbenannt. Ich tue alles um bei der Lösung zu helfen. Also lies bitte mal meinen letzten Edit wir haben Zeitgleich geschrieben glaube ich. Dann erklärt sich was ich getan habe.

und ich habe gesehen das du mit Absoluten Pfaden gearbeitet hast. Aber von Desktop aus passiert wirklich GAR NICHTS !
Member: Rockett
Rockett Mar 12, 2019 at 13:57:56 (UTC)
Goto Top
Sorry verstehe nicht warum ich jetzt der Buhmann bin... Das Archiv war von Anfang an leer... Erst durch eine Unachsamkeit meinerseits war das Archiv dann ich mehr leer als ich das Script nochmal ausgeführt habe. Erst so war es doch möglich das das script die PDF dateien erstellt hat.

Also du gibst dir hier mega mühe und ich wollte einfach nicht untätigen warten und dich alleine nach dem Problem suchen lassen. Dein Urscript ist jetzt nicht verschandelt face-sad wie ich schon sagte so sieht es aktuell aus:

$Path='C:\Peter\New\'  
$Archive='C:\Peter\Archiv\'  
$PdfTk='C:\PDFtk\pdftk.exe'  


foreach ($Folder in Get-ChildItem -Path $Path -Directory){
    $FileList=@()

    

    if (Test-Path -Path (Join-Path -Path $Folder -ChildPath "aeg_rg_?.pdf")){  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "aeg_rg_?.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "dl?_rg.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "Ln?.pdf")  

        $MergedFile=Join-Path -Path $Path -ChildPath ((Split-Path -Path $Folder -Leaf)+".PDF")  

        $Argumentlist=($FileList -Join " ")+" cat output $MergedFile"  

        Start-Process -FilePath $PdfTk -Argumentlist $Argumentlist

        Move-Item -Path $Folder -Destination $Archive
    }
    
    
}
Member: Kraemer
Kraemer Mar 12, 2019 at 14:01:16 (UTC)
Goto Top
Zitat von @Rockett:
und ich habe gesehen das du mit Absoluten Pfaden gearbeitet hast. Aber von Desktop aus passiert wirklich GAR NICHTS !
was meinst du, warum ich dir die Links gepostet habe? Starte die ISE - rotz meinen Code da per Copy&Paste rein und pass die Pfade an. Fertig. Dann sieht man nämlich auch irgendwelche Fehlermeldungen!

Ich habe natürlich auch die echten Dateien umbenannt.
willst du mich verarschen?
Wieso kopierst du nicht einen bis zehn Ordner 1:1 in ein Testverzeichnis?

Ich tue alles um bei der Lösung zu helfen.
tust du nicht - du bist am raten

Dann erklärt sich was ich getan habe.
leider ist dem nicht so
Member: Kraemer
Kraemer Mar 12, 2019 at 14:05:51 (UTC)
Goto Top
Zitat von @Rockett:

Sorry verstehe nicht warum ich jetzt der Buhmann bin...
kann ich dir sagen. Zitat von dir:
es passiert nichts.
sag ich kann nicht sagst du:
Leider ist das wirklich so

und was wissen wir jetzt: Beide Aussagen stimmen nicht
Member: Rockett
Rockett Mar 12, 2019 at 14:08:49 (UTC)
Goto Top
was meinst du, warum ich dir die Links gepostet habe? Starte die ISE - rotz meinen Code da per Copy&Paste rein und pass die Pfade an. Fertig. Dann sieht man nämlich auch irgendwelche Fehlermeldungen!

Ich habe das doch in die ISE getan. Von Anfang an... ich hab doch sogar extra Screens gemacht. Es gab keine Fehlermeldung bis ich die Datei verschoben habe.

was meinst du, warum ich dir die Links gepostet habe? Starte die ISE - rotz meinen Code da per Copy&Paste rein und pass die Pfade an. Fertig. Dann >sieht man nämlich auch irgendwelche Fehlermeldungen!

Genau das habe ich getan am Anfang
Member: Rockett
Rockett Mar 12, 2019 at 14:09:57 (UTC)
Goto Top
und was wissen wir jetzt: Beide Aussagen stimmen nicht

Okay bitte jetzt lies doch mal was ich dir sage. DAS WAR GENAU SO
Member: Rockett
Rockett Mar 12, 2019 updated at 14:21:25 (UTC)
Goto Top
So und hier nochmal:

Ich habe die Datei wieder auf den Desktop Kopiert so wie es am Anfang war, siehe da. Keine Fehlermeldung und keine Aktion, habe extra 11 mal ausgeführt damit du siehst das nichts dazwischen steht. Bild Nr.1

Und auf Bild Nr.2 ist dann eine fehlermeldung zusehen. SELBER CODE anderer Ort.
ps_bild
ps_bild2
Member: Rockett
Rockett Mar 12, 2019 at 14:24:57 (UTC)
Goto Top
Und um es nochmal Ausdrücklich zu sagen. Dieser Fehler kommt nur wenn im Archiv ein Ordner mit dem selben Namen bereits vorhanden ist und folgendes passiert:
1. Ordner werden nicht verschoben (da im ziel schon vorhanden)
2. PDF Datei wird erstellt

Wenn ich aber die Ordner aus dem Archiv wieder lösche (So wie es sein soll. Die sollen da ja nämlich erst durch das Scirpt mit verschoben werden. Dann

1. werden die Ordner verschoben
2. wird keine PDF Datei erstellt
Member: Kraemer
Solution Kraemer Mar 12, 2019 at 14:37:54 (UTC)
Goto Top
Zitat von @Rockett:

Und um es nochmal Ausdrücklich zu sagen. Dieser Fehler kommt nur wenn im Archiv ein Ordner mit dem selben Namen bereits vorhanden ist und folgendes passiert:
1. Ordner werden nicht verschoben (da im ziel schon vorhanden)
2. PDF Datei wird erstellt

Wenn ich aber die Ordner aus dem Archiv wieder lösche (So wie es sein soll. Die sollen da ja nämlich erst durch das Scirpt mit verschoben werden. Dann

1. werden die Ordner verschoben
2. wird keine PDF Datei erstellt
na sieh mal einer guck - eine Fehlerbeschreibung.
mein Rechner scheint schneller, wie deiner zu sein. Packe mal ein
-wait
hinten an das Start-Process
Member: Rockett
Rockett Mar 12, 2019 at 14:40:17 (UTC)
Goto Top
SOOOOO:

Aktueller stand der Dinge (BITTE GLAUBE MIR face-smile ) wenn die Datei nicht im selben Ordner ist passiert NICHTS!

Datei im selben Ordner öffnet (je nach Ordneranzahl) DOS prompts die allerdings zu schnell... jetzt habe ich mir gedacht ich öffne mal 5 spiele gleichzeitig... lege mal meinen Rechner schön lahm. Dann habe ich geschafft ein Screen von dem promt zu machen der denke ich mal das Geheimnis löst face-smile

So wie es scheint verschiebt dein Script die Ordner BEVOR er die PDF Dateien erstellt. Von Daher findet er diese nicht. Dadurch das ich den Fehler gemacht habe und im Archiv Kopien der Ordner gelassen habe, konnte er die Ordner nicht verschieben und deshalb hat er die PDF Dateien dann auch gefunden. Siehe Screenshot
ps_bild
Member: Kraemer
Solution Kraemer Mar 12, 2019 at 14:41:47 (UTC)
Goto Top
Zitat von @Rockett:
So wie es scheint verschiebt dein Script die Ordner BEVOR er die PDF Dateien erstellt.
jep - siehe mein vorheriger Post (-wait)
Member: Rockett
Rockett Mar 12, 2019 at 14:43:22 (UTC)
Goto Top
na sieh mal einer guck - eine Fehlerbeschreibung.
mein Rechner scheint schneller, wie deiner zu sein. Packe mal ein
Quelltext | Drucken
01.
-wait
hinten an das Start-Process

Bingo!
Member: Rockett
Rockett Mar 12, 2019 updated at 14:45:58 (UTC)
Goto Top
DANKE für deine verlorenen nerven! Solltest du mal in Köln sein lade ich dich herzlich gerne zu einem Kölch ein! face-smile

EDIT:

für alle nochmal der Fertige CODE für die nächsten Hilfesuchenden. Und bitte MERKE: Bei mir geht es nur wenn der Script im selben Ordner ist. Wer weiß warum... face-smile

$Path='C:\Peter\New\'  
$Archive='C:\Peter\Archiv\'  
$PdfTk='C:\PDFtk\pdftk.exe'  


foreach ($Folder in Get-ChildItem -Path $Path -Directory){
    $FileList=@()

    

    if (Test-Path -Path (Join-Path -Path $Folder -ChildPath "aeg_rg.pdf")){  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "aeg_rg.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "dl?_rg.pdf")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder -ChildPath "Ln?.pdf")  

        $MergedFile=Join-Path -Path $Path -ChildPath ((Split-Path -Path $Folder -Leaf)+".PDF")  

        $Argumentlist=($FileList -Join " ")+" cat output $MergedFile"  

        Start-Process -wait -FilePath $PdfTk -Argumentlist $Argumentlist

        Move-Item -Path $Folder -Destination $Archive
    }
    
    
}
Member: Rockett
Rockett Mar 12, 2019 at 14:47:27 (UTC)
Goto Top
Würde es große Umstände machen wenn das Script jetzt noch in eine vorhandene log Datei schreibt, mit einem Zeitstempel, wann er die Datei erstellt hat face-smile ? *duck*
Member: Kraemer
Kraemer Mar 12, 2019 updated at 14:58:39 (UTC)
Goto Top
Zitat von @Rockett:
Und bitte MERKE: Bei mir geht es nur wenn der Script im selben Ordner ist. Wer weiß warum... face-smile

na ich. Ein Fall von PEBCAK

$Path='C:\Peter\New\'  
$Archive='C:\Peter\Archiv\'  
$PdfTk='C:\PDFtk\pdftk.exe'  

foreach ($Folder in Get-ChildItem -Path $Path -Directory){
    $FileList=@()
    if (Test-Path -Path (Join-Path -Path $Folder.FullName -ChildPath "aeg_rg.png")){  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder.FullName -ChildPath "aeg_rg.png")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder.FullName -ChildPath "dl?_rg.png")  
        $FileList+=Get-ChildItem -Path (Join-Path -Path $Folder.FullName -ChildPath "Ln?.png")  

        $MergedFile=Join-Path -Path $Path -ChildPath ((Split-Path -Path $Folder -Leaf)+".PDF")  

        $Argumentlist=($FileList -Join " ")+" cat output $MergedFile"  

        Start-Process -FilePath $PdfTk -Argumentlist $Argumentlist -Wait

        Move-Item -Path $Folder.FullName -Destination $Archive
    }
}
Member: Kraemer
Solution Kraemer Mar 12, 2019 at 15:16:53 (UTC)
Goto Top
Zitat von @Rockett:

Würde es große Umstände machen wenn das Script jetzt noch in eine vorhandene log Datei schreibt, mit einem Zeitstempel, wann er die Datei erstellt hat face-smile ? *duck*

Move-Item -Path $Folder -Destination $Archive

ersetzen durch

if (Test-Path -Path $MergedFile){
Move-Item -Path $Folder -Destination $Archive
(Get-Date -uFormat "%Y-%m-%d %H.%M.%S ")+$MergedFile | Out-File c:\temp\my.log -append  
}
Member: Rockett
Rockett Mar 13, 2019 at 07:25:00 (UTC)
Goto Top
na ich. Ein Fall von PEBCAK

Aua face-smile ich weiß du bist fest davon überzeugt das ich das Problem bin face-smile aber du siehst doch den Endcode... wenn ich den Script auf den Desktop kopiere passiert nichts face-smile auch wenn du das nicht glauben willst. Liegt vielleicht an irgendwelchen Kleinigkeiten... vielleicht weil mein Benutzername ein Leerzeichen enthällt... hat schon so manche Probleme verursacht.

Naja ich arbeite einfach mit nem Link auf den Desktop muss halt so gehen face-smile

if (Test-Path -Path $MergedFile){
Move-Item -Path $Folder -Destination $Archive
(Get-Date -uFormat "%Y-%m-%d %H.%M.%S ")+$MergedFile | Out-File c:\temp\my.log -append
}

Das ist Perfekt! Danke nochmal für deine Hilfe! Ohne Witz du bist ein Genie face-smile

werde mir jetzt zur Aufgabe machen den ganzen Code und alle benutzten befehle zu verstehen! DANKE!
Member: Kraemer
Kraemer Mar 13, 2019 at 08:34:57 (UTC)
Goto Top
Zitat von @Rockett:
Aua face-smile ich weiß du bist fest davon überzeugt das ich das Problem bin face-smile
ne - eben nicht. Ich habe den Code angepasst - ich hatte da einen Fehler gemacht, der auf meinem System allerdings nicht aufgefallen ist.
Member: Rockett
Rockett Mar 13, 2019 at 08:56:58 (UTC)
Goto Top
ach jetzt sehe ich es erst face-smile die FullName sache da face-smile jetzt geht es face-smile Supi