sir5al
Goto Top

Dateien automatisch suchen und löschen

Hallo zusammen,

Folgende Situation:
Durch ein Programm wird immer ein zusammen gehöriges Dateienpaar erzeugt.
Beide Dateien unterscheiden sich nur durch den Dateityp bzw. die Dateiendung.
Zum Beispiel: Dateiname.abc und Dateiname.xyz
Beide Dateien befinden sich auch immer im gleichen Verzeichnis.
Leider ist es so, dass im Laufe der Zeit viele Datei-Leichen entstanden sind.
So gibt es dann nur noch eine der beiden Dateien, nämlich die mit der Endung .xyz.
Nun möchte ich gerne alle diese verwaisten Dateien mit der Endung .xyz löschen.
Aber nur dann, wenn im selbigem Verzeichnis die dazugehörige gleichnamige Datei mit der Endung .abc nicht mehr existiert.
Wenn also die Datei mit der Endung .xyz verwaist ist.
Wie kann ich nun automatisiert alle verwaiste Dateien mit der Endung .xyz unterhalb eines Startverzeichnisses löschen?
Wichtig ist außerdem auch noch: Groß-/Kleinschreibung sollte bei der Suche ignoriert werden!
D.H.: Bei der Datei mit der Endung .xyz ist der Dateiname immer Kleigeschrieben!

Ich hoffe, ich konnte mein Problem klar und deutlich genug beschreiben.

Viele Grüße

Christian

Content-Key: 170081

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

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

Member: Friemler
Friemler Jul 20, 2011 at 10:24:28 (UTC)
Goto Top
Hallo Christian,

sollte so gehen (ungetestet):
@echo off & setlocal


set "StartDir=D:\Daten"  
set "Ext1=xyz"  
set "Ext2=abc"  


for %%f in ("%StartDir%\*.%Ext1%") do (  
  if not exist "%%~dpnf.%Ext2%" del "%%f"  
)

Gruß
Friemler
Member: Sir5al
Sir5al Jul 20, 2011 at 10:41:04 (UTC)
Goto Top
Hallo Friemler,

das ging ja fix... face-smile
Leider klappts noch nicht so ganz hunderprozentig:
Im Startverzeichnis selbst arbeitet es schon mal richtig, alle Leichen werden gelöscht.
Allerdings werden anscheinend alle Unterverzeichnisse ab dem Startverzeichnis nicht mit einbezogen bzw. korrekt abgearbeitet.

Trotzdem schon mal vielen Dank!

Gruß

Christian
Member: Friemler
Friemler Jul 20, 2011 at 10:46:21 (UTC)
Goto Top
Hallo Christian,

klassischer Fall von "Anforderung schlecht formuliert": Du hast kein Wort von Unterverzeichnissen gesagt.

Any way, das erfordert nur eine kleine Änderung:
@echo off & setlocal


set "StartDir=D:\Daten"  
set "Ext1=xyz"  
set "Ext2=abc"  


for /r "%StartDir%" %%f in ("*.%Ext1%") do (  
  if not exist "%%~dpnf.%Ext2%" del "%%f"  
)

Gruß
Friemler
Member: Skyemugen
Skyemugen Jul 20, 2011 at 10:49:14 (UTC)
Goto Top
Aloha Friemler,

na, na, na, sei mal nicht so hart zum TE, denn der Satz

Wie kann ich nun automatisiert alle verwaiste Dateien mit der Endung .xyz unterhalb eines Startverzeichnisses löschen?

ließ darauf schließen :P (sonst hätte er bestimmt, innerhalb eines Verzeichnisses o.ä. geschrieben ^_^).

greetz André
Member: Friemler
Friemler Jul 20, 2011 at 11:02:21 (UTC)
Goto Top
Moin André,

da hat Deinereiner aber schon härteres losgelassen... face-wink

Die drei Wörtchen "und allen Unterverzeichnissen" hätten auch nicht geschadet.

Gruß
Friemler
Member: Sir5al
Sir5al Jul 21, 2011 at 05:33:11 (UTC)
Goto Top
Hallo Friemler,

Super, so klappt's. Perfekt!
Vielen Dank!
Kleine Frage noch:
Kann ich die zu löschenden Dateien mitsamt Pfad vorher noch zu Dokumentationszwecken in einer TXT-Datei protokollieren?

Gruß

Christian
Member: Skyemugen
Skyemugen Jul 21, 2011 at 07:37:54 (UTC)
Goto Top
Aloha,

joa, kannst du face-wink

@echo off & setlocal

set "StartDir=D:\Daten"  
set "Ext1=xyz"  
set "Ext2=abc"  
set "Log=D:\Daten\Protokoll.log"  

echo Geloschte Dateien am %date% um %time%:>>"%Log%"  
for /r "%StartDir%" %%f in ("*.%Ext1%") do (  
	if not exist "%%~dpnf.%Ext2%" (  
		echo %%f>>"%Log%"  
		del "%%f"  
	)
)
goto :eof

Der Satz vor der Schleife ist optional, versteht sich face-wink
Member: Sir5al
Sir5al Jul 21, 2011 at 10:11:02 (UTC)
Goto Top
Hey,
Was soll ich sagen???
Einfach TOP!
Vielen Dank!

Gruß

Christian