Dateien mit Bedingung löschen
Ich möchte eine Batch-Datei erstellen mit der ich meinen Datenmüll entfernen kann.
Ich habe in meinen Foto-Ordnern Dateien mit den Endungen .jpg und .raw . wenn ich die Fotos aussortiere, lösche ich die jpg-Dateien. Nun sollte mein Skript die dazugehörigen raw-Dateien löschen.
Bedingung: Wenn die Datei mit dem gleichen Namen schon im gleichen Ordner vorhanden ist, darf sie bleiben.
Sonst: Löschen
Das Skript sollte nach Möglichkeit auch Unterordner einbeziehen.
Vielen Dank.
passa
Ich habe in meinen Foto-Ordnern Dateien mit den Endungen .jpg und .raw . wenn ich die Fotos aussortiere, lösche ich die jpg-Dateien. Nun sollte mein Skript die dazugehörigen raw-Dateien löschen.
Bedingung: Wenn die Datei mit dem gleichen Namen schon im gleichen Ordner vorhanden ist, darf sie bleiben.
Sonst: Löschen
Das Skript sollte nach Möglichkeit auch Unterordner einbeziehen.
Vielen Dank.
passa
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 205652
Url: https://administrator.de/forum/dateien-mit-bedingung-loeschen-205652.html
Ausgedruckt am: 05.04.2025 um 02:04 Uhr
14 Kommentare
Neuester Kommentar
Also um es noch mal zu verstehen...
Du hast einen Ordner, hast die beiden Dateiendungen .jpg und .raw . Ich nehme an die .raw Dateien sind Kopien vom .jpg und haben denselben Namen? Und du möchtest jetzt ein Skript haben, was dir raussucht, ob es die .raw Datei auch als .jpg gibt, die abgesehen von der Dateiendung den selben Namen hat, und wenn nicht, soll die .raw gelöscht werden?
Du hast einen Ordner, hast die beiden Dateiendungen .jpg und .raw . Ich nehme an die .raw Dateien sind Kopien vom .jpg und haben denselben Namen? Und du möchtest jetzt ein Skript haben, was dir raussucht, ob es die .raw Datei auch als .jpg gibt, die abgesehen von der Dateiendung den selben Namen hat, und wenn nicht, soll die .raw gelöscht werden?
Hallo passa,
Grüße Uwe
@echo off & setlocal ENABLEDELAYEDEXPANSION
set rootFolder=C:\DeinOrdner\
for /f "tokens=*" %%i IN ('dir /s /b /A-D "%rootFolder%*.raw"') DO @(
set file=%%i
set jpgfile=!file:~0,-3!jpg
if not exist "!jpgfile!" (
set jpgfile=!file:~0,-3!jpeg
if not exist "!jpgfile!" (
del "!file!" /q
)
)
)
Grüße Uwe
... und warum nicht? Gab's eine Fehlermeldung? Ein unerwartetes Resulat? Hier geht's nämlich.
Gruss!
Zitat von @passa123:
@colinardo: Vielen Dank Uwe. Ich habe dein Code ausführlich getestet und einmal hat es geklappt. Dann sind mir plötzlich
alle raw Dateien gelöscht worden und dann wieder keine. Keine Ahnung warum ich nicht immer das gleiche Resultat erhalte. Ich
werde es nochmals ein wenig testen.
@colinardo: Vielen Dank Uwe. Ich habe dein Code ausführlich getestet und einmal hat es geklappt. Dann sind mir plötzlich
alle raw Dateien gelöscht worden und dann wieder keine. Keine Ahnung warum ich nicht immer das gleiche Resultat erhalte. Ich
werde es nochmals ein wenig testen.
vielleicht haben deine JPG's andere Endungen als in meinem Script (jpg,jpeg).
--edit: Hab das Script dazu noch oben ergänzt, jetzt können die Endungen "jpg" oder "jpeg" heißen.
Hallo passa123!
Zusammen mit einer etwas eleganteren (siehe oben bei Endoro) Handhabung des "Typ"-Problems etwa so:
Grüße
bastla
Zusammen mit einer etwas eleganteren (siehe oben bei Endoro) Handhabung des "Typ"-Problems etwa so:
@echo off & setlocal
echo Programm zum loeschen der unnoetigen RAW-Dateien.
set /P rootFolder=Bitte geben Sie den Pfad (mit \ am Ende)an:
set Anzahl=0
for /f "tokens=*" %%i IN ('dir /s /b /A-D "%rootFolder%*.raw"') DO (
if not exist "%%~dpni.jpg" if not exist "%%~dpni.jpeg" (
del /q "%%i"
set /a Anzahl+=1
)
)
echo Es wurden %Anzahl% Dateien gelöscht.
bastla