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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 290700
Url: https://administrator.de/contentid/290700
Printed on: April 23, 2024 at 20:04 o'clock
2 Comments
Latest comment
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"