Powershell Hilfe

  • Wir haben auf Arbeit für die Dokumentenverarbeitung eine Software die über Powershell Macros konfiguriert wird, da meine Chefs zu geizig für anständigen Support sind bleibts an mir hängen.

    Worum gehts.

    Die Software wandelt aktuell PDF Dateien wieder in Tiff-Dateien um, also aus einem PDF viele Tiff.
    Nun zum Problem, bei der Ausgabe der Tiffs stellt die Software beim zweiten Tiff fest das die Datei ja schon da ist und nicht überschrieben werden kann.
    Ich möchte nun das aber einfach beim Dateinamen eine 1, a oder weis der Geier angehangen sodas ich alle Tiffs sortieren und weiter verarbeiten kann.

    Ich möchte nur sagen das ich blutiger Powershell-Anfänger bin also bitte nich lachen xD:adsh:

    Code
    $aa = $object.InputRelativeFolder                                                       #ist der Pfad mit den "Rohdaten"
    $bb = [io.path]::GetFileNameWithoutExtension( $object.InputFilename )                #entfernen der erweiterung der Rohdaten, also aus Mist.pdf wird Mist
    $cc = join-path $aa -Childpath $bb\                                                     #kombinieren des Rohdatenpfades mit einem Zusätzlichen Ordner der so heist wie das PDF (also Mist)
    $cc + $bb+$i++                                                                        #Benenung des Dateinamens +1 damit er alle dateien schreiben kann und sortierbar bleiben

    wie gesagt BLUTIGER Anfänger :bonk:

    Ich hoffe es ist irgendwie ersichtlich was ich möchte, funktionieren tut es, nur zählt es am ende der datei weiter also nach Mist1 und Mist2 kommt Haufen3 und Berg4

  • Hi Seth,

    da mußte ne Filenamenummerierung dazubasteln :topmodel:

    var tiffprint=1
    addi
    if tiffprint = tiffprint goto end
    print tiffprint
    tiffprint = tiffprint+1

    goto addi
    end

    So in etwa vom Ablauf.. - bin echt müde und kann grad gedanklich schlecht aufs scripten umswitchen..

    Den Dateinamen legst ja fest und da bauste ne Schleife rein, das bei jedem Tiff eins höher gezählt wird.
    Das ist Grundlagenkram, dazu findest Du reichlich im Netz.
    Ob da vergleichbare Sachen aus PHP perl Javascript (welche ja alle echt ähnlich gescriptet sind) in der Powershell funktionieren kann ich allerdings nicht beantworten, nie mit der PS gearbeitet.

    Viel Spaß dabei :)
    - styvi -

  • wie funktioniert das? läuft das in einer schleife für alle dateien durch? oder wird der code für jede datei extra aufgerufen?
    die aller primitivste und schnellste lösung wäre wohl einfach den letzten dateinamen in einer weiteren variable abzuspeichern und dann per if mit dem aktuellen dateinamen zu vergleichen. unterscheiden sie sich, setzt du die zählervariable zurück.

  • Kann es sein, daß der Code für jedes einzelne zu konvertierende File getriggert und damit pro File nur ein Mal ausgeführt wird? Das wäre der problematischere Fall, denn dann bringt eine globale Schleife in dem Sinn nämlich nix. Was du dann machen müßtest wäre es, ein Dirlisting aus'm Zielverzeichnis zu holen, die Dateinamen nach Nummern zu filzen, und danach deine Entscheidung zu treffen.. Ich kann (wie gestern im Steam Chat besprochen) selber NULL PowerShell, aber wenn meine Triggervermutung stimmt, dann ca. so'n Pseudocode (Pseudo!!), ich gehe von vierstelligen Nummern aus, mit leading zeros:

    Aber ich glaub du brauchst eine bessere Beschreibung dessen, wie der Datenfluß da genau abläuft, und wann und wie das PS genau aufgerufen wird, mit welchen Parametern usw.. und einen PS Hacker brauchst. ;)

    Edit: Hoppla, da hat der PS Hacker eh schon gepostet! :spitze:

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either... Edit: 2020... holy crap, we're on a roll here~♡!

    Quote Bier.jpg@IRC 2020: "Je schlimmer der Fetisch, desto besser!"

    2 Mal editiert, zuletzt von GrandAdmiralThrawn (20. Juni 2015 um 09:36)

  • Hi

    Das getfilename kann man machen, aber dann dazu halt den als var für die zu sichernden Tiffs äquivalent zum pdf und den output durchnummeriert.
    Ich hatte das auch erst in Erwägung gezogen, aber zwingend notwendig ists ja eher nicht, sondern die writefunction.
    Sobald die steht kann man ans Verfeinern gehen.
    Auch die handhabung per array kam mir in den Sinn, aber ich wollt es nicht unnötig verkomplizieren....

    Codetechnisch kann ich nichts beisteuern, nur Gedanken zum Ablauf und der groben Handhabung. Mit den Details befassen sich besser die Kenner der PS ;)

    Grüße

  • Ich danke euch erst einmal, ich werds mir das WE mal anschauen...

    wie funktioniert das? läuft das in einer schleife für alle dateien durch? oder wird der code für jede datei extra aufgerufen?
    die aller primitivste und schnellste lösung wäre wohl einfach den letzten dateinamen in einer weiteren variable abzuspeichern und dann per if mit dem aktuellen dateinamen zu vergleichen. unterscheiden sie sich, setzt du die zählervariable zurück.

    [align=justify]Kann es sein, daß der Code für jedes einzelne zu konvertierende File getriggert und damit pro File nur ein Mal ausgeführt wird? Das wäre der problematischere Fall, denn dann bringt eine globale Schleife in dem Sinn nämlich nix. Was du dann machen müßtest wäre es, ein Dirlisting aus'm Zielverzeichnis zu holen, die Dateinamen nach Nummern zu filzen, und danach deine Entscheidung zu treffen..

    Aber ich glaub du brauchst eine bessere Beschreibung dessen, wie der Datenfluß da genau abläuft, und wann und wie das PS genau aufgerufen wird, mit welchen Parametern usw.. und einen PS Hacker brauchst. ;)

    Edit: Hoppla, da hat der PS Hacker eh schon gepostet! :spitze:

    So wie ich es mitbekommen habe läuft es pro Batch (den definiere ich) kann ein Job sein, ein Indexwert, Ordner, Datei etc.
    Aktuell isses ein Ordner mit vielen Unterordnern in denen die zu bearbeiteten PDFs liegen.

    Momentan sind glaub ich 7 Batches am laufen, in den Batches zählt er immer von 1 an.
    Mein gefrickel ist bestimmt nicht schön oder gar sauber, aber es funktionert, irgendwie :topmodel:

    Der Witz is, wenn ich das Macro weg lasse, nummeriert er die datein durch, also Mist_p0001.tif etc. aber dann verliere ich die Ordnerstruktur, und bei rund 6000 PDFs is das ein Problem.