[PowerShell] bestimmte Dateien in einem Ordner bearbeiten

LukS

Rear Admiral Pro
Registriert
Dez. 2009
Beiträge
5.202
Hallo,

ich hab ein Script geschrieben, welches mir bestimmte Dateien in einem Ordner verändern soll.

Oben gibt es eine Funktion. Dieser Funktion übergebe ich den Dateinamen (zB. 1234-123) und diese Funktion verändert mir dann die Datei und speichert sie wieder. Das funktioniert super, wenn ich den Dateinamen manuell angebe.

Ich will die Funktion aber jetzt für jede Datei mit der Dateiendung .jp2 in einem bestimmten Verzeichnis aufrufen.

Wie geht das in Powershell? Ich weis auch gerade nicht nach was ich da bei Google suchen sollte.
Kann mir da einer bitte helfen?

Code:
funktion(Dateiname)
{ ändert Dateiname.jp2 und speichert die Datei unter Dateiname.asdf
ändert Dateiname.j2w
}

for jede Datei mit Endung .jp2 
do funktion (Dateiname)
 
Code:
dir <pfad> | funktion
Mit mehr Infos könnte man dir besser helfen.
 
Hi

So würd ich das machen

Code:
Get-ChildItem *.jp2 | Rename-Item -NewName { [io.path]::ChangeExtension($_.name, "neue Endung") }
 
Zuletzt bearbeitet:
Ich hab es jetzt selbst zusammengebracht. Auch das alle unterverzeichnisse durchsucht werden und auch dort alle Dateien editiert werden.

Hier das ganze Script, falls es jemanden interssiert:
PowerShell:
#======================================================================================
#=== © LukS
#======================================================================================

# Wandelt jpeg2000-Dateien in TIFFs um 
# Kopiert j2w Dateien zu tfw 

cls

function createTiffOutOfjp2 ($jp2Name)
{
    $outDir = $(Get-Location).Path+'\'

    $tiffqellArg = $outDir + $jp2Name + '.jp2'
    $tiffcreateArg = '/convert=' + $outDir + 'tiff\' + $jp2Name + '.tif'
    
    $argList = $tiffqellArg + ' ' + $tiffcreateArg
    write "`nArgumentliste für IrfanView: $argList"
    
    write "Start converting $jp2Name with Irfanview..."
    Start-Process $IrvanViewDir -Argumentlist $argList -wait
    write "converting finished!`n"

    # Kopieren der jp2-World-Datei zu tiff-World-Datei
    $copyarg1 = $outDir + $jp2Name + '.j2w'
    $copyarg2 = $outDir + 'tiff\' + $jp2Name + '.tfw'    
    copy $copyarg1 $copyarg2
}

$workingDir="C:\@\_test" #Verzeichnis das durchsucht werden soll
$IrvanViewDir = "C:\Program Files (x86)\IrfanView\i_view32.exe" #Pfad zu IrfanViw

cd $workingDir

$paths = Get-ChildItem $workingDir -Directory 


for ($ii=0; $ii -lt $paths.Count; $ii++)
{
    cd $paths[$ii].FullName
    $files = Get-ChildItem -Filter *.jp2

    for ($i=0; $i -lt $files.Count; $i++)
    {
        createTiffOutOfjp2 ($files[$i].BaseName)
    }
    cd ..
}

write "`nFertig!"

Mein Problem bezog sich auf Zeile 35 bis 48. Ich wusste nicht wie ich für jede Dateien mit der Endung .jp2 die Funktion aufrufen kann.

Das Script ist nicht gerade eine Meisterleistung, aber es funktioniert.
 
Zuletzt bearbeitet:
Zurück
Oben