Beste Möglichkeit zum Löschen von Zeichen aus Dateinamen nach einer bestimmten Zeichenfolge in Windows

Beste Möglichkeit zum Löschen von Zeichen aus Dateinamen nach einer bestimmten Zeichenfolge in Windows

Ich habe mich gefragt, ob es eine schnelle und einfache Möglichkeit gibt, nach Dateinamen mit mehreren Zeichen zu suchen und alle Zeichen danach zu löschen.

Wenn ich beispielsweise eine Datei mit dem Namen habe:

Great Movie Title 2021 1080p asldkfjalfj.mkv
Another Great Movie 1997 480p aldfasdfa.avi
Boring movie but its ok 2015 720p asadfqwr.mp4

1080pIch möchte , 720p, 480pim Dateinamen suchen und dann alles danach löschen.

Ich weiß, dass Sie die Windows-Batch-Schleife verwenden können For, aber Sie können nur ein einzelnes Zeichen verwenden, um sie zu finden. Selbst wenn es eine Drittanbieter-App ist, die dies kann, kann ich sie anscheinend nicht finden.

Antwort1

Durchsuchen Sie das gesamte Laufwerk oder nur ein einzelnes Verzeichnis?

In jedem Fall kann PowerShell damit umgehen.

Dies betrifft das gesamte Laufwerk C: und benennt alles um, was 1080p im Dateinamen enthält:

cd c:\
Get-ChildItem -recurse -include *1080p* | foreach-object { $name = $_.fullname; $newname = $name -replace '1080p.*\.','1080p.'; rename-item $name $newname } 

Sie könnten es dann für 480p und 720p wiederholen.

Antwort2

Power Shellist der richtige Weg.

Hier ist ein anderer Ansatz, mit dem Sie sie alle in einem Durchgang und leicht geändert erledigen können.

Dies würde vom obersten Ordner aus ausgeführt. Dadurch wird der -Path(hier positionelle) Parameter freigegeben, um nach mehreren Dateitypen zu filtern, da -Pathim Gegensatz zu -Filterein Array von Werten angenommen werden kann.

Get-ChildItem *.mkv, *.avi, *.mp4 -Recurse | ForEach {
    If ( $_.BaseName -match '^.+(1080p|720p|480p)' ) {
        Rename-Item -LiteralPath $_.FullName -NewName ( $matches[0] + $_.Extension )
    }
}

Der reguläre Ausdruck '^.+(1080p|720p|480p)'passt zu allen Zeichen vom Anfang des Dateinamens bis einschließlich einer der mit "or'd" ( |) aufgelösten Zeichenfolgen. Dieser Text wird im $matchesautomatischen Attribut gespeichert und zum Erstellen des neuen Namens verwendet.

verwandte Informationen