Alle Ordner finden in denen keine! mp3-Datei enthalten ist

NewNoise

Active member
Registriert
8 Juli 2009
Beiträge
1.421
Hi,

ich bin gerade dabei meine MP3-Sammlung ordentlich zu machen.
Nun habe ich mit einem Tool nahezu alle Cover geladen, und ärgerlicherweise erst danach die Tags gesäubert und die Dateien umbenannet und die Ordner-Strukturen sauber gemacht.
Nun habe ich in meinem Musik-Ordner halt einige Ordner wo noch ein Bild drin ist, aber keine MP3s mehr.
Ein batch-File für leere Ordner löschen habe ich gefunden, nun würde ich aber halt gerne ein Tool haben, was mir alle Ordner (ab einem bestimmten "Überordner") ausgibt in denen keine MP3-Datei enhalten ist, um diese zu löschen.

Hat da jemand ne Idee?

Danke!
noise
 
mmh.
Mein leere Ordner entfernen Skript funktioniert auch nicht ganz, das geht nicht in die tiefsten Ebenen, vielleicht kann da mal jemand von euch drüber sehen?
Ich möchte halt rekursiv alle Ordner löschen wo keine MP3-Datei drin ist löschen.
Fürs erste würde auch halt alle leeren Ordner löschen reichen!

Code:
set Folder="G:\Musik"
for /f "tokens=*" %%A in ('dir /ad /s /b %Folder% ^|Sort /Reverse') do (
RmDir "%%A" 2>NUL
)

Danke!
 
lad dir freecommander runter und klick die Option an, Dateigrösse von Ordnern anzuzeigen, nach der kannst du dann auch sortieren, deine Bild Dateien werden nicht grösser sein als nen cover jpg. Der Windows Explorer ist eh für nix zu gebrauchen...
 
so ich hab für dich mal ein programm in Java geschrieben das alle Ordner löscht in denen keine Mp3-Dateien drin sind.

Aufruf über: java -jar pfadZurJar\Cleaner.jar "Pfad zum Ordner in der die Ordner ohne Mp3s gelöscht werden sollen"

P.s.: Lieber nicht mit C: versuchen :D . Das Programm löscht ohne Rückfrage. Für eventuelle Schäden übernehme ich keine Haftung.

Der Quellcode sieht so aus:

Code:
import java.io.File;

public class Starter {
	public static void  main( String[] args){
		if(args.length != 1 || args[0].equals(""))
			return;
		File folder = new File(args[0]);
		if(folder.isDirectory())
			deleteStart(folder);
		System.out.println(args[0]);
	}

	private static boolean deleteStart(File folder) {
		File[] folderFiles = folder.listFiles();
		boolean containsNoMp3 = true;
		for(int i=0; i < folderFiles.length; i++){
			System.out.println(folderFiles[i].getName());
			if(folderFiles[i].isDirectory())
				if(!deleteStart(folderFiles[i]))
					containsNoMp3 = false;
			if(folderFiles[i].getName().toLowerCase().endsWith(".mp3"))
				containsNoMp3 = false;
		}
		
		if(containsNoMp3){
			for(int i=0; i < folderFiles.length; i++){
				folderFiles[i].delete();
			}
			folder.delete();
			return true;
		}else
			return false;
	}
}
Programm: Anhang anzeigen 23589

Mfg
roskas
 
Hallo roskas,

ich habe gerade diesen Beitrag gelesen.
Auch ich möchte das alle Ordner gelöscht werden, in denen keine Mp3-Dateien drin sind.
Da ich blutiger Anfänger bin, weiß ich leider nicht, wie ich Dein obiges Script anwenden muss.
Es scheint ja zu funktionieren.
Über eine Rückmeldung würde ich mich sehr freuen.

MFG hannes
 
roskas hat sich zuletzt vor etwa 9 Jahren hier im Forum eingeloggt.

Aber was genau möchtest du denn wissen? Der Aufruf in der Konsole steht oben ja auch schon. Wichtig ist dabei aber den richtigen Pfad anzugeben.
 
oder mit Powershell
Die beiden PowerShell-Befehle dienen dazu, alle Dateien außer .mp3 und .mp4 in einem angegebenen Ordner und seinen Unterordnern zu listen und dann zu löschen:
FindRemove.png
  1. Der erste Befehl:
    powershellCopy code
    Get-ChildItem -Path "C:\Pfad\zum\Ordner" -File -Recurse | Where-Object { $_.Extension -notin ('.mp3', '.mp4') } | Select-Object FullName
    • Get-ChildItem durchsucht den angegebenen Ordner und seine Unterordner nach Dateien.
    • -Path "C:\Pfad\zum\Ordner" gibt den Pfad zum Ordner an, den Sie durchsuchen möchten.
    • -File stellt sicher, dass nur Dateien (keine Verzeichnisse) ausgewählt werden.
    • -Recurse sorgt dafür, dass auch Unterordner durchsucht werden.
    • Where-Object { $_.Extension -notin ('.mp3', '.mp4') } filtert die ausgewählten Dateien, um nur diejenigen auszuwählen, deren Erweiterung (Dateiendung) weder .mp3 noch .mp4 ist.
    • Select-Object FullName zeigt die Liste der ausgewählten Dateien mit ihren vollständigen Pfaden an, ohne sie zu löschen.
  2. Der zweite Befehl:
    powershellCopy code
    Get-ChildItem -Path "C:\Pfad\zum\Ordner" -File -Recurse | Where-Object { $_.Extension -notin ('.mp3', '.mp4') } | Remove-Item -Force
    • Dieser Befehl führt die gleiche Suche nach Dateien durch und filtert sie wie im ersten Befehl beschrieben.
    • Remove-Item -Force löscht die ausgewählten Dateien ohne vorherige Bestätigung.
Bitte stellen Sie sicher, dass Sie diese Befehle mit äußerster Vorsicht verwenden, da sie dazu führen können, dass Dateien dauerhaft gelöscht werden. Überprüfen Sie die aufgelisteten Dateien sorgfältig, bevor Sie den zweiten Befehl ausführen, um sicherzustellen, dass keine wichtigen Dateien gelöscht werden.
 
im archlinux forum würde jetzt dieser Kommentar von dem User mit dem Triangel Profilbild stehen und sowas sagen wie:

"dOnT neCrobUmp oLd tHReadS" [link zum wiki hier einfuegen]
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben