thomas1972
Goto Top

Dateien mit betimmten Dateiname auslesen, verarbeiten und unter neuen namen speichern

Hallo Zusammen,
ich kenne mich mit PowerShell nicht wirklich aus.

Folgende soll passieren bzw. funktioniert soweit gut

PDF Dateien werden zur weiteren Verarbeitung in TIFF konvertiert (GHostscript) und in bestimmten Ziel abgespeichert.
Das PDF selbst wird dann verschoben, soweit ganz gut.

Dateinamen sind aktuell z.b. 1234567_name_vorname.pdf
Sobald die Bearbeitung fertig ist, erhält diese ein x vor dem Namen x1234567_name_vorname.pdf
und soll in ein tiff konvertiert werden. Nun soll aber folgendes passieren wo ich nicht weiter komme

-> die zu erstellende TIFF Datei soll einen bestimmten Aufbau des Namen erhalten.

Datum des letzten Zugriffs des PDF _ die 7 Stellige Nummer _ das Wort "prüfung" _ name_vorname.tif
z.b. 09072020_1234567_prüfung_name_vorname.tiff

bisher sieht das Script wie folgt aus. es werden alle PDF´s des Verzeichnis als TIFF erstellt und verschoben.
vielleicht kann mir hier jemand helfen.

#Pfad Ghostscript
$tool = "C:\Sicherung_Stick\Tools\ghostscript\bin\gswin64c.exe"  

#Ausleseverzeichnis PDF
$inputDir = "X:\513214\7. Scan Posteingang\"  

#Pfad für erledigt
$outputDirPDF = "X:\513214\7. Scan Posteingang\ERLEDIGT\"  

#Pfad für TIFF
$outputDir = "X:\513214\TIFF zum einlesen\"  

$pdfs = get-childitem $inputDir -recurse | where name -like "x*.pdf"  

foreach($pdf in $pdfs)
{
    $tif = $outputDir + $pdf.BaseName + ".tif"  
    $pdf_to_move = $inputDir + $pdf.BaseName + ".pdf"  
    if(test-path $tif)
    {
        "tif file already exists " + $tif  
    }
    else        
    {   
        'Processing ' + $pdf.Name          
        $param = "-sOutputFile=$tif"  
        & $tool -q -sPageList=1 -dNOPAUSE -sDEVICE=tiffg4 $param -r600 $pdf.FullName -c quit
    }
    # Datei verschieben
    Move-Item $pdf_to_move $outputDirPDF
    }
EXIT

Content-Key: 586216

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

Ausgedruckt am: 19.03.2024 um 07:03 Uhr

Mitglied: thomas1972
thomas1972 10.07.2020 um 07:11:55 Uhr
Goto Top
Habs selbst gefunden,

hier die Lösung

$tool = 
    'C:\Sicherung_Stick\Tools\ghostscript\bin\gswin64c.exe'  
$inputDir = 
    'X:\513214\7. Scan Posteingang'  
$outputDirPDF = 
    'X:\513214\7. Scan Posteingang\ERLEDIGT'  
$outputDir = 
    'X:\513214\TIFF zum einlesen'  
$pdfs = 
    Get-ChildItem -Path $inputDir -Recurse -Filter 'x*.pdf'  

foreach ($pdf in $pdfs) {
    $splittedBaseName = 
        $pdf.BaseName -split '_'  
    $tifBaseName = 
        $pdf.LastWriteTime.ToString('yyyyMMdd') +   
        '_' +   
        $splittedBaseName.TrimStart('x') +   
        '_prüfung_' +   
        ($splittedBaseName[1..2] -join '_')  
    $tif = 
        Join-Path -Path $outputDir -ChildPath ($tifBaseName + '.tif')  
    $pdf_to_move = $inputDir + $pdf.BaseName + ".pdf"  


    if (Test-Path -Path $tif) {
        "tif file already exists $tif"  
    }
    else {  
        "Processing  $($pdf.Name)"         
        $param = "-sOutputFile=$tif"  
        & $tool -q -sPageList=1 -dNOPAUSE -sDEVICE=tiffg4 $param -r600 $pdf.FullName -c quit
    }
    Move-Item $pdf_to_move $outputDirPDF
}