Hallo,
da mein Autoradio leider nur 999 MP3 Tracks verwalten kann ist die
Kapazizät von dem 8GB USB Stick natürlich nicht ausgenutzt.
Ich hab mir nun überlegt, ein Skript zu schreiben, das die MP3 Liste auf
den Stick durchsucht und jeweils 2 oder 3 Tracks per MP3merge
zusammenkopiert und die Originaldateien dann auf dem Stick löscht.
Mir ist klar, das damit die ID3 Tags "verloren gehen" aber das fände ich
OK.
Kennt da jemand was, oder kann mir jemand ein passende Skriptsprache
empfehlen? Ich würde gerne was nehmen, was ohne installation läuft.
Z.B. ne normale Batch Datei, Autohotkey, ...
Werner
Ja, sowas meine ich.
Jetzt habe ich ja schon schön jeweils 2 Files pro Zeile.
Prinzipiell kann man ja wohl auch per copy a+b c Befehl joinen, aber ich
habe noch nicht verstanden, wie ich das zeilenweise innerhalb einer
Batch auswerten kann.
Es gibt ein Programm zum aneinanderhängen von mp3-Dateien, das Programm
heißt mp3Merge. Leider gibt es keine eigene Homepage für das Programm,
so dass du es am besten mit einer Suchmaschine deiner Wahl suchen musst.
http://mp3wrap.sourceforge.net/ ?
Wie das mit Windows geht, weiß ich nicht, mit bash wäre ein Vorschlag
für Ernsts mp3merge.sh (ungetestet):
#!/bin/bash
if [ -f "$2" ]; then
outfile="$(basename "$1" .mp3)"_and_"$(basename "$2")"
mp3wrap "$outfile" "$1" "$2"
rm "$1" "$2"
fi
mp3wrap sieht super aus.
Ich habe mir jetzt mal die Windowsversion der Bash gezogen.
Leider bekomme ich nicht raus, wie ich die Parameterübergabe machen
muss.
Prinzipiell würde ich mir das so vorstellen
Die gefundenen Dateien werden per Pipe an xargs übergeben, das übergibt
per pipe die "sortierte liste" an das shell script.
Leider geht das so nicht.
Hat jemand erfahrung damit, wie man das macht?
warum lädst du dir nicht einfach das windoof-programm mp3merge herunter?
simpler geht es doch wohl kaum, damit kann man auch mehr als nur zwei
mp3s aneinanderhängen. hier mal ein link
http://www.technikteam.de/software/download.php?id=637 (stand
03.06.2008)
@tom
wenn ich Winmerge richtig verstanden habe, muss ich da die Dateien von
Hand zusammenkopieren.
Ich möchte von ca. 2000 Dateien jeweils 2 Stk. zusammen kopieren.
> Die gefundenen Dateien werden per Pipe an xargs übergeben, das übergibt> per pipe die "sortierte liste" an das shell script.> Leider geht das so nicht.> Hat jemand erfahrung damit, wie man das macht?
Das letzte "|" ist zuviel.
1
xargs -0 -n2 bash mp3merge.sh
macht folgendes:
lies Nullterminierte Strings von STDIN, und immer wenn zwei vorhanden
sind, rufe das angegebene Programm mit diesen strings als Parameter auf.
D.H. zusammen mit dem find werden folgende Kommandos ausgeführt:
1
bash mp3merge.sh file1.mp3 file2.mp3
2
bash mp3merge.sh file3.mp3 file4.mp3
3
...
4
usw...
5
...
Wenns ne ungerade Anzahl Files war, wird das Script ein letztes Mal mit
nur einem File aufgerufen. Macht aber nix, das Beispiel von Matt
überprüft das, und lässt das File in Frieden.
Sollte eigentlich nicht sein.
find mit "-print0" und xargs mit "-0" tauschen die Dateinamen extra über
Nullterminierte Strings aus, damit eben keine Sonderzeichen/Leerzeichen
Probleme machen. Sogar Newlines und Tabs im Filenamen kommen da
unbeschadet durch.
Kann dann eigentlich nur am merge-script liegen. Das Beispiel weiter
oben packt $1 und $2 allerdings immer in Quotes ("$1" "$2").
Poste doch mal dein Script hier.
Ach ja,
rm "$1" "$2" schreibt man besser als rm -- "$1" "$2", nicht dass jemand
eine Datei mit Namen "-rf" anlegt ;)
Wenn ich das richtig verstanden habe macht die Option -print0 bzw. -0
den String Null-Terminiert. Nur leider werden bei dem Ergebnis keine
Anführungszeichen drumherum gesetzt. Somit werden die Leerzeichen bei
der Parameterübergabe an das BashScript leider als verschiedene
Parameter erkannt.
Wenn ich nur find und xargs aufrufe sieht das so aus:
Nachtrag: Es kann gut sein, dass die Windows-Bash die
Parameter-Auflösung anders handhabt (handhaben muss)...
Du hast die Files doch alle auf deinem USB-Stick, oder?
Versuch einfach mal ein Linux von CD zu Booten, und probiers da aus.
Evtl ist auch andLinux (http://www.andlinux.org/) besser als Cygwin
geeignet, da es einen echten Linux-Kernel unter Windows bootet, sich
aber trotzdem recht gut in das Windows drumherum integriert.
Stimmt, ich werde heute abend mal probieren, die bash vorher zu starten
und die find/xargs Kommandozeile da zu starten.
Wäre nochmal ne Idee.
Es gibt ja auch noch verschiedenste Bash Versionen für Windows.
Ich meld mich dann ;-)
Ok, ich hab 2 verschiedene Bash ausprobiert. Bei beiden geht das auch
nicht.
Ich hab mir gestern abend schonmal ein USB Linux (puppy) geladen, aber
hat dann im X-Mode gestartet und ich konnte nicht rausfinden, wie ich
mein USB Laufwerk mounten muss.