Löschen von Dateien / Ordnern mit folder.jpg

Begonnen von AldiMp3, 04. Januar 2012, 19:35:08

Vorheriges Thema - Nächstes Thema

AldiMp3

Hallo,

besteht die Möglichkeit, das Löschen ganzer Ordner in Foobar weiter zu konfigurieren?. Bei mir bleiben die folder.jpg in sonst leeren Ordner immer stehen. Gibt es sonst ein Tool, um Festplatten automatisch nach Ordnern zu untersuchen, die nur noch Bilder, aber keine Musik mehr enthalten?

Danke und Gruß
AldiMp3

huber71

#1
Man kann so etwas mit einem Excel-Makro abfragen. Wenn Du daran Interesse hast, kannst Du mir eine PM schicken, ich sende Dir dann das Script zu

Gruß Huber

acknot

Hi AldiMp3,


soweit ich verstanden habe, willst du aus Foobar heraus Ordner löschen? Falls ja, geht es so:

über die component "Run Services" ist es möglich aus Foobar2000 heraus externe Programme aufzurufen, die solltest du installieren:
http://www.foobar2000.org/components/view/foo_run

Dazu brauchst du noch irgendein Command Line Tool, das Ordner löschen kann. Ich verwende oft z.B. "Swiss File Knife", das hier zu finden ist:
http://stahlworks.com/dev/swiss-file-knife.html


Das Programm Swiss File Knife, also die Datei "sfk.exe" kommt in das Fb2K Hauptverzeichnis - dort, wo auch die foobar2000.exe liegt.

In Foobar unter File--> Preferences--> Tools--> Run Services erstellst du mit "Add" einen neuen Eintrag:
Unter "Label" kann ein aussagekräftiges "Delete Folder" oderso stehen, damit man es später im Menü direkt wiederentdeckt.
Unter "Path" trägst du das hier ein:

sfk.exe del -yes -withdirs -hidden "$directory_path(%path%)"


Wenn du in der Playlist nun ein Album hast, das du löschen möchtest, genügt es, wenn du auf einen Song des Albums rechtsklickst und im Kontextmenü "Run Service--> Delete Folder" klickst. Der Ordner, in dem die entsprechende Datei lag, wird mit allen Inhalten ohne Rückfrage gelöscht.
Falls das übers Kontextmenü zu viele Klicks sind, kannst du auch eine Tastenkombination bestimmen: Preferences-- >Keyboard Shortcuts.



Zur Erklärung von sfk.exe del -yes -withdirs -hidden "$directory_path(%path%)"
Diese Teile: "del -yes -withdirs -hidden" sind Parameter für sfk.exe:

del = der Befehl delete
-yes = bestätigt den Löschbefehl - ansonsten würde das Tool nur die zu löschenden Elemente auflisten
-withdirs = nötig zum Ordner mitlöschen
-hidden = löscht auch versteckte Dateien, die ansonsten erhalten blieben


Der Teil "$directory_path(%path%)" ist Foobars Title Formatting Sprache für den Pfad zum Ordner, in dem eine Audiodatei liegt:

%path% entspräche c:\musik\band\audio.mp3

$directory_path(%path%) entspricht c:\musik\band

Damit wird der Pfad zum zu löschenden Ordner von Foobar an das Löschtool sfk.exe übergeben. Die Hochkommata um "$directory_path(%path%)" nicht vergessen, falls im Pfad Leerzeichen vorkommen!


Zur besseren Übersicht im Foobarordner ordne ich Zusatztools in einen Unterordner "utilities". Der RunServices Pfad müsste dann lauten:

utilities\sfk.exe del -yes -withdirs -hidden "$directory_path(%path%)"


Ich hoffe, es hilft. Frag gerne zurück, falls was unklar ist. Nacht!

fooamp

Was für eine schöne, umfassende Erklärung. Danke! Scheint ein spannendes Tool zu sein. Wäre was für unsere Software-Ecke - nur, falls Du Lust hast, es dort vorzustellen.

PS. Lustiger Avatar... Guten Appetit.

@AldiMp3

Es geht also, was Du vorhast, jedoch nicht ohne Umwege. Bedenke: foobar2000 ist nun mal kein Filemanager, daher sind die Möglichkeiten unter "File Operations" auch nur rudimentär.

AldiMp3

Danke für die Hilfestellungen. Die Lösung über "Run Services" erscheint mir kaum eleganter, als über Foobar-Shortcuts in den Quellordner zu springen und z.B. mit Opus Directory ohne Rückfrage und Papierkorb mit der Enf-Taste zu löschen. Nur was mache ich mit all den alten Ordner-Leichen, die noch da sind und nur die folder.jpg enthalten?

Vielleicht ist der Ansatz, dies von Foobar zu erwarten ungewöhnlich, denn sicherlich ist ein Datei-Manager dafür wesentlich besser geeignet, aber auch beim mächtigen Opus Directory fehlt mir noch die zündende Idee. Ich will praktisch alle Festplatten und Verzeichnisse suchen und löschen, die nur noch Bilder und keine Musik mehr enthalten.

Foobar hat diesen Zustand herbeigeführt. Eigentlich müßte mit der letzten MP3 im Verzeichnis immer auch das Cover verschwinden. Foobar läßt es aber offensichtlich stehen und entfernt nur Ordne, wenn diese keine weiteren Dateiinhalte (z.B. Bilder) enthalten. Beim Verschieben und Kopieren ist das wesentlich flexibler gelöst.

Gruß AldiMp3

qwert73

Zitat von: AldiMp3 in 06. Januar 2012, 18:21:20
Vielleicht ist der Ansatz, dies von Foobar zu erwarten ungewöhnlich, denn sicherlich ist ein Datei-Manager dafür wesentlich besser geeignet ...
Wenn ich alle Musik-Dateien von der Festplatte lösche, dann ist der Wunsch des Nutzers so was von naheliegend, auch den restlichen Krempel loswerden zu wollen, dass foobar2000 zumindest auf Nachfrage den Rest wegräumen sollte, ohne deswegen zu einem Filemanger werden zu müssen.

grimes

Zitat von: AldiMp3 in 06. Januar 2012, 18:21:20
Ich will praktisch alle Festplatten und Verzeichnisse suchen und löschen, die nur noch Bilder und keine Musik mehr enthalten.

Ich empfehle Remove Empty Directories (RED).

Ignoriere unter Settings einfach zusätzlich folder.jpg.





AldiMp3

Nochmals Danke für die Anregungen. Ich habe folgenden Weg gefunden:

Opus Directory erlaubt die Voreinstellung "Extras Ordneroptionen Optionen Größenberechnung Ein/Aus/Automatisch"

Nach Einstellung der automatischen Größenberechnung braucht der Dateimanager zwar einige Minuten, bis die Ordner nach Größe sortiert angezeigt sind, aber alle mit bis zu 100KB hatten wie zu erwarten nur noch Bilder und keine Musik mehr. Das Löschen in der sortieren Liste wurde damit sehr einfach.

Gruß AldiMp3

acknot

Oh wie passend! Ordnergrößensortierung hätte ich nämlich auch selbst gerne noch vorgeschlagen, weil damit auch anderer Kleinkram berücksichtigt wird (.txt, .m3u, front.jpg, usw.).
Aber besonders weil zufälligerweise gerade dein bevorzugter File Manager Directory Opus (alternativ kann das auch XYExplorerFree) Ordner ohne Hierarchie darstellen und sortieren kann. In den meisten anderen File Managern oder Disk Space Tools, die Ordnergrößenberechnung können, müsste man sich in der Ordnerstruktur durch die Unterordner klicken, was alles wieder kompliziert.

Ich möchte aber noch eine kleine Lanze für den RunServices Ansatz brechen:
ZitatDie Lösung über "Run Services" erscheint mir kaum eleganter, als über Foobar-Shortcuts in den Quellordner zu springen und z.B. mit Opus Directory ohne Rückfrage und Papierkorb mit der Enf-Taste zu löschen.

Nach einmaliger Einrichtung, ist die Fähigkeit Ordner zu löschen in Foobar dauerhaft im Kontextmenü oder per Tastenkombination vorhanden. Den Löschbefehl schickt Foobar zwar an ein Zusatzprogramm, aber davon merkt man ja nichts.
Weniger Schritte verlangen andere Dateioperationen in Foobar auch nicht, siehe z.B.:
Kontextmenü--> File Operations--> Delete File

und zum Vergleich:
Kontextmenü--> Run Services--> Delete Folder

Falls du unter Eleganz einfache Handhabung verstehst, wird eine native Löschfunktion auch nie schneller zu erreichen sein - irgendeine Taste muss man schließlich drücken.


ZitatBeim Verschieben und Kopieren ist das wesentlich flexibler gelöst

Stimmt eigentlich! Vielleicht ist ein foobarinternes Workaround attraktiver, indem man die Move Funktion neu versteht:

Im Kontextmenü--> File Operations--> Move to...  z.B. einstellen:
Destination Folder: c:\deleteme (vorher erstellen)
File Name Pattern: %path%
Move entire source folder content: anhaken
Remove empty source folders: anhaken
Als Preset "Delete Folder" speichern und es ist über das Kontextmenü direkt aufrufbar:
Kontextmenü--> File Operations--> Move to...--> Delete Folder

Am Ende des Tages einfach den Kram im Destination Folder löschen. Vielleicht ein kleines Batch oder derlei einrichten, das das beim Hoch- oder Runterfahren selbstständig erledigt.

Oder als Destination Folder irgendeinen Temp-Ordner angeben, der sowieso vom Betriebssystem oder möglicherweise bei dir eingesetzten Cleaning Tools gepflegt und regelmäßig geleert wird.



@fooamp: Danke, ich nutze SFK nur gelegentlich und kenne längst nicht alle Funktionen, aber für eine Vorstellung reicht es wohl. Bei Gelegenheit stelle ich es gerne vor.


coolmik

Das klappt ja alles hervorragend!

Aber wie bzw. mit welchem Befehl kann ich den Ordner löschen, wenn es sich um eine komprimierte Datei (ZIP, Rar was auch immer) handelt? Das funktioniert so nicht...

Danke!

acknot

Das liegt daran, dass über $directory_path(%path%) der Pfad zu einem Archiv mit Unterordnern so ausgegeben wird:

c:\musik\album.zip|album

oder bei %path%

c:\musik\album.zip|album\song.mp3

Unterordner in einem Archiv werden dabei nach einem senkrechten Strich folgend ausgegeben. Foobar übergibt damit einen für das Löschtool unverständlichen Pfad. Hat das Archiv keine Unterordner, funktioniert es übrigens auch mit dem bereits beschriebenen Befehl:
sfk.exe del -yes -withdirs -hidden "$directory_path(%path%)"

Da es auch mehrere Unterordner geben kann, genügt es nicht den Pfad um eine Ordnerebene zu kürzen. Aber weil der senkrechte Strich, der bei Archiven ausgegeben wird, unter Windows in Pfaden nicht erlaubt ist, gibt er eine willkommene Markierung ab, wo der komplette Pfad zum Archiv endet und die Inhalte des Archivs beginnen. Über eine passende Funktion kann man dann nur die vor diesem senkrechten Strich stehenden Zeichen ausgeben, was der normale Archivpfad ist.
Glücklicherweise steht direkt ein passendes Beispiel hier in den Titel Format Examples: http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Titleformat_Examples

unter der Überschrift: Find first occurrence of character X in %tag%, and return everything in front of X
Man kann toll nachvollziehen, wie sie funktioniert.


Wenn man sie für Pfade umschreibt und das gewünschte Zeichen angibt, sieht der Befehl mit dem Foobar zu löschende Archivpfade an sfk.exe übergibt, so aus:

sfk.exe del -yes -withdirs -hidden "$puts(spacer,$strchr(%path%,|))$trim($left(%path%,$sub($get(spacer),1)))"

Gerda_Mueller

Zitat von: acknot in 06. Januar 2012, 01:11:43
[...]
In Foobar unter File--> Preferences--> Tools--> Run Services erstellst du mit "Add" einen neuen Eintrag:
Unter "Label" kann ein aussagekräftiges "Delete Folder" oderso stehen, damit man es später im Menü direkt wiederentdeckt.
Unter "Path" trägst du das hier ein:

sfk.exe del -yes -withdirs -hidden "$directory_path(%path%)"
[...]
Ahoi!

Vorweg, meine Ordnerstruktur sieht wie folgt aus:
F:\eigene\Eigene Musik\T\The Dead Milkmen\[1985] Big Lizard in My Backyard\

Nehmen wir an, ich möchte Big Lizard in My Backyard löschen. Wie gewünscht werden alle Dateien in F:\eigene\Eigene Musik\T\The Dead Milkmen\[1985] Big Lizard in My Backyard\ gelöscht und der daraufhin leere Ordner \[1985] Big Lizard in My Backyard\ ebenfalls. Wenn das aber das einzige Album für diesen Interpreten war, bleibt das leere Verzeichnis F:\eigene\Eigene Musik\T\The Dead Milkmen\ übrig.
Kann man sfk beibringen, das auch noch zu löschen? Dann wär das nämlich in höchstem Maße perfekt <3