Dateien mittels Inhalt zwischen zwei Zeichen sortieren
Hallo zusammen,
ich habe folgendes Anliegen:
Ich habe mehrere PDF-Dateien unsortiert in einem Ordner liegen, die nach einem bestimmten Prinzip aufgebaut sind, beispielsweise:
32244_333444_abcdef.pdf
48482_333444_833739_737383.pdf
HFJDJ_12000_43.pdf
993393939_12000_7FE.pdf
Ich würde gerne mithilfe einer Batchdatei die vorliegenden Dateien in Ordner einsortieren lassen. Die Ordner wurden bereits erstellt und sind benannt wie der Inhalt zwischen dem ersten und dem zweiten „_“-Zeichen, in dem Fall also z.B. „333444“ und „12000“.
Ich habe schon mehrere Sachen ausprobiert, kriege aber irgendwie keine Lösung hin. Könnt ihr mir da vielleicht helfen?
Vielen Dank an alle die mir helfen wollen und liebe Grüße
pirat-ohne-bart
ich habe folgendes Anliegen:
Ich habe mehrere PDF-Dateien unsortiert in einem Ordner liegen, die nach einem bestimmten Prinzip aufgebaut sind, beispielsweise:
32244_333444_abcdef.pdf
48482_333444_833739_737383.pdf
HFJDJ_12000_43.pdf
993393939_12000_7FE.pdf
Ich würde gerne mithilfe einer Batchdatei die vorliegenden Dateien in Ordner einsortieren lassen. Die Ordner wurden bereits erstellt und sind benannt wie der Inhalt zwischen dem ersten und dem zweiten „_“-Zeichen, in dem Fall also z.B. „333444“ und „12000“.
Ich habe schon mehrere Sachen ausprobiert, kriege aber irgendwie keine Lösung hin. Könnt ihr mir da vielleicht helfen?
Vielen Dank an alle die mir helfen wollen und liebe Grüße
pirat-ohne-bart
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 476362
Url: https://administrator.de/forum/dateien-mittels-inhalt-zwischen-zwei-zeichen-sortieren-476362.html
Ausgedruckt am: 22.04.2025 um 09:04 Uhr
4 Kommentare
Neuester Kommentar

Bitte, auf dem Tablett
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens
Moin,
mit der Powershell:
Die Zielverzeichnisse liegen unterhalb des Verzeichnisses, in dem die Dateien sich befinden. Das Zielverzeichnis wird, sofern nicht vorhanden, erstellt.
hth
Erik
mit der Powershell:
$files = Get-ChildItem -File
foreach($file in $files) {
$dir = $($file.basename.split("_"))[1]
if(!$(test-path $dir)) {
new-item -ItemType "directory" -path $dir
}
Move-Item $file $dir
}
Die Zielverzeichnisse liegen unterhalb des Verzeichnisses, in dem die Dateien sich befinden. Das Zielverzeichnis wird, sofern nicht vorhanden, erstellt.
hth
Erik
Servus,
Quell- und Ziel-Ordner anpassen. Kommentare siehe Quellcode.
Grüße Uwe
Quell- und Ziel-Ordner anpassen. Kommentare siehe Quellcode.
Batch
@echo off &setlocal
:: QUELLORDNER
set "quelle=D:\quelle"
:: ZIELORDNER
set "ziel=D:\ziel"
:: Für jede PDF Datei in der Quelle, zerlege den Basename mit _ und übernehme nur den zweiten Token in die Variable %%b, erstelle Ordner falls noch nicht geschehen und verschiebe Datei in den Ordner
for %%a in ("%quelle%\*.pdf") do for /f "tokens=2 delims=_" %%b in ("%%~na") do (
if not exist "%ziel%\%%b" md "%ziel%\%%b"
move "%%a" "%ziel%\%%b\"
)
Powershell
# Quellordner
$quelle = "D:\quelle"
# Zielordner
$ziel = "D:\ziel"
# Für jedes PDF in der Quelle checke ob der Basename den Anforderungen genügt, gruppiere die Dateien nach dem Regex-Match erstelle den Ordner falls noch nicht geschehen und verschiebe die Gruppe von Dateien in den Zielordner
gci $quelle -Filter *.pdf -File | ?{$_.Basename -match '_([^_]+)'} | group {$matches[1]} | %{
$target = "$ziel\$($_.Name)"
if(!(Test-Path $target)){md $target -Force | out-null}
$_.Group | move -Destination $target -Force -Verbose -WhatIf
}