hakdem91
Goto Top

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?

Content-Key: 290700

Url: https://administrator.de/contentid/290700

Printed on: April 23, 2024 at 20:04 o'clock

Mitglied: 114757
Solution 114757 Dec 11, 2015 updated at 17:32:30 (UTC)
Goto Top
Moin,
kleines Powershell-Skript (min. PS3.0) face-wink
$valid = gc 'C:\liste.txt'  
gci 'c:\Ordner\*.csv' | ?{($_.Basename -replace '.*(\d{5})$','$1') -notin $valid} | remove-item -Force  
in Batch z.B. so:
@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"  
Gruß jodel32
Member: hakdem91
hakdem91 Dec 11, 2015 at 17:32:15 (UTC)
Goto Top
Ich hab wirklich keine Ahnung wie man sowas programmiert aber ich würde das echt gerne können.

Dein Batch-Code scheint zu funktionieren. Ich danke dir vielmals!