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-Key: 205652

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

Printed on: April 19, 2024 at 03:04 o'clock

Member: Noobstar0815
Noobstar0815 Apr 25, 2013 at 12:51:29 (UTC)
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?
Member: passa123
passa123 Apr 25, 2013 at 13:17:33 (UTC)
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.)
Member: Noobstar0815
Noobstar0815 Apr 25, 2013 at 13:22:22 (UTC)
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 :/
Member: Endoro
Endoro Apr 25, 2013 updated at 15:02:13 (UTC)
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!
Member: colinardo
colinardo Apr 25, 2013 updated at 15:55:03 (UTC)
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
Member: passa123
passa123 Apr 25, 2013 at 15:36:00 (UTC)
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.
Member: Endoro
Endoro Apr 25, 2013 at 15:45:56 (UTC)
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!
Member: colinardo
colinardo Apr 25, 2013 updated at 15:57:15 (UTC)
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.
Member: bastla
bastla Apr 25, 2013 updated at 17:56:48 (UTC)
Goto Top
@ Endoro
Vielleicht mit einem "not"?

Grüße
bastla
Member: Endoro
Endoro Apr 25, 2013 at 18:19:16 (UTC)
Goto Top
@ bastla

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


Gruss!
Member: passa123
passa123 Apr 28, 2013 at 15:05:05 (UTC)
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.
Member: passa123
passa123 Apr 28, 2013 at 15:25:32 (UTC)
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."
Member: bastla
bastla Apr 28, 2013 updated at 15:48:22 (UTC)
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
Member: passa123
passa123 Apr 28, 2013 at 18:13:06 (UTC)
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