passa123
Goto Top

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

Content-ID: 205652

Url: https://administrator.de/forum/dateien-mit-bedingung-loeschen-205652.html

Ausgedruckt am: 05.04.2025 um 02:04 Uhr

Noobstar0815
Noobstar0815 25.04.2013 um 14:51:29 Uhr
Goto Top
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?
passa123
passa123 25.04.2013 um 15:17:33 Uhr
Goto Top
Genau das meine ich.
(Die .raw Datei ist die Aufnahme ohne Komprimierung. Diese Dateien werden (bei gegebener Einstellung) beim Fotografieren erstellt und dienen zur Weiterbearbeitung.)
Noobstar0815
Noobstar0815 25.04.2013 um 15:22:22 Uhr
Goto Top
Hmm, also, ich kann dir den Denkweg schreiben, den Code bekomm ich aber nicht auf die Reihe :D
Du müsstest mittels for Schleife den Namen einer .raw Datei nehmen, und dann prüfen ob eine .jpg mit gleichem Namen da ist, wenn nicht löschen. Weiter weiß ich nicht, tut mir leid :/
Endoro
Endoro 25.04.2013 aktualisiert um 17:02:13 Uhr
Goto Top
Hallo Leute,

ich bin sicher, dass es hier in dem schicken Forum dazu schon Antworten gibt, auch wenn ich die jetzt nicht gesucht hab.
for %%i in (*.raw) do if exist "%%~ni.JPG" echo del "%%~fi"  

Gruss!
colinardo
colinardo 25.04.2013 aktualisiert um 17:55:03 Uhr
Goto Top
Hallo passa,

@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
passa123
passa123 25.04.2013 um 17:36:00 Uhr
Goto Top
@Endoro: Danke. Ich habe in diesem Forum und auch über Google intensive Nachforschungen angestellt und leider nichts gefunden. Dein Code funktioniert bei mir leider nicht.

@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.
Endoro
Endoro 25.04.2013 um 17:45:56 Uhr
Goto Top
Zitat von @passa123:
Dein Code funktioniert bei mir leider nicht.


... und warum nicht? Gab's eine Fehlermeldung? Ein unerwartetes Resulat? Hier geht's nämlich.

Gruss!
colinardo
colinardo 25.04.2013 aktualisiert um 17:57:15 Uhr
Goto Top
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.

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.
bastla
bastla 25.04.2013 aktualisiert um 19:56:48 Uhr
Goto Top
@ Endoro
Vielleicht mit einem "not"?

Grüße
bastla
Endoro
Endoro 25.04.2013 um 20:19:16 Uhr
Goto Top
@ bastla

ich hab's mir schon gedacht: ich hab die Aufgabe nicht gepeilt. Wer darf bleiben- wer muss gehn face-smile


Gruss!
passa123
passa123 28.04.2013 um 17:05:05 Uhr
Goto Top

... und warum nicht? Gab's eine Fehlermeldung? Ein unerwartetes Resulat? Hier geht's nämlich.

Gruss!

...keine Ahnung. Es geschieht nichts. Keine Fehlermeldung, kein Resultat.
passa123
passa123 28.04.2013 um 17:25:32 Uhr
Goto Top
Zitat von @colinardo:
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.

Super, Danke! Obwohl meine Dateien die Endungen .jpg haben ist es am Donnerstag nicht gegangen und jetzt geht es problemlos. Ich habe das Skript nun noch um eine Benutzereingabe erweitert.
@echo off & setlocal ENABLEDELAYEDEXPANSION
echo Programm zum loeschen der unnoetigen RAW-Dateien.
set /P rootFolder=Bitte geben Sie den Pfad an:
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  
            )
	)
)

Gibt es noch eine Möglichkeit, abschliessend noch eine Zusammenfassung anzeigen zu lassen? Ich denke da an: "Es wurden ... Dateien gelöscht."
bastla
bastla 28.04.2013 aktualisiert um 17:48:22 Uhr
Goto Top
Hallo passa123!

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.
Grüße
bastla
passa123
passa123 28.04.2013 um 20:13:06 Uhr
Goto Top
Danke bastla, jetzt habe ich mein finales Skript. Ich habe noch eine Pause an den Schluss gestellt (sonst sieht man das Resultat nicht).
Das Problem ist gelöst. Danke an alle Beteiligten.
@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 geloescht.
pause