Im Ordner nach Dateinamen ab bestimmter Stelle suchen, vergleichen und dann löschen falls nicht in der Liste vorhanden
Ich habe in einem Ordner 1030 csv-Dateien.
Beispiele für Dateinamen:
produkt_monat_Monatswerte_17810101_20141231_02290.csv
produkt_monat_Monatswerte_18240101_20141231_02444.csv
produkt_monat_Monatswerte_18910101_20110331_00003.csv
...
...
...
Von diesen vielen Daten brauche ich bestimmte 165 Dateien und der Rest ist unbrauchbar (löschen).
Entscheidend sind die letzten 5 Zahlen im Namen (Bsp.: 02290). Es handelt sich hier um eine ID.
Nun brauche ich nur bestimmte ID's. Die ID's, die ich brauche habe ich in einer .txt als Liste gespeichert.
Ist es möglich mit einer Batch-Datei die Dateien zu filtern?
Beispiele für Dateinamen:
produkt_monat_Monatswerte_17810101_20141231_02290.csv
produkt_monat_Monatswerte_18240101_20141231_02444.csv
produkt_monat_Monatswerte_18910101_20110331_00003.csv
...
...
...
Von diesen vielen Daten brauche ich bestimmte 165 Dateien und der Rest ist unbrauchbar (löschen).
Entscheidend sind die letzten 5 Zahlen im Namen (Bsp.: 02290). Es handelt sich hier um eine ID.
Nun brauche ich nur bestimmte ID's. Die ID's, die ich brauche habe ich in einer .txt als Liste gespeichert.
Ist es möglich mit einer Batch-Datei die Dateien zu filtern?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 290700
Url: https://administrator.de/forum/im-ordner-nach-dateinamen-ab-bestimmter-stelle-suchen-vergleichen-und-dann-loeschen-falls-nicht-in-der-liste-290700.html
Ausgedruckt am: 19.04.2025 um 12:04 Uhr
2 Kommentare
Neuester Kommentar

Moin,
kleines Powershell-Skript (min. PS3.0)
in Batch z.B. so:
Gruß jodel32
kleines Powershell-Skript (min. PS3.0)
$valid = gc 'C:\liste.txt'
gci 'c:\Ordner\*.csv' | ?{($_.Basename -replace '.*(\d{5})$','$1') -notin $valid} | remove-item -Force
@echo off
set "folder=C:\ordner"
set "liste=C:\liste.txt"
>"%temp%\search.lst" (for /f "usebackq delims=" %%a in ("%liste%") DO @echo %%a.csv)
for /f "delims=" %%a in ('dir /b /s /A-D "%folder%\*.csv" 2^>nul ^| findstr /v /G:"%temp%\search.lst"') DO @del "%%a"