Dateien löschen

Zum Beispiel funktioniert dieser Formatstring ...

$ansi($if($eql($left(%ALBUM%,3),'Pop'),'Compilations\Pop\'%ALBUM%,'Compilations\Dance\'%ALBUM%))

... oder ...

$ansi('Compilations\'$if($eql($left(%ALBUM%,3),'Pop'),'Pop\','Dance\')%ALBUM%)

... übrigens ... der Konverter "Tag - Tag" bietet eine Vorschau für den Formatstring.

Du kannst das Ergebnis des Formatstrings nur dann in einer Aktion verwenden, wenn die jeweilige Datei ein Tagfeld hat, in dem das Ergebnis des Formatstrings gespeichert ist.
Das stimmt so nicht absolut ... man kann den Formatstring benutzen, wo er gebraucht wird.
Zur Vereinfachung von Arbeitsschritten kann man ein Tagfeld anlegen, und dieses dann später entfernen, wenn man es nicht mehr braucht.

DD.20140607.1453.CEST

Ja, der Formatstring funktioniert tadellos, vielen Dank.

Aber wie Du sagst, die mp3-Datei speichert den neuen Tag %itunesfolder% nicht, deswegen kann ich ihn auch nicht beim Export verwenden. Wie kann man denn das Feld der Datei zuordnen und dann wieder entfernen?

Am liebsten wäre es mir so: ich ziehe die Dateien in das MP3Tag-Übersichtsfenster, rufe eine Aktion auf, die den Albumnamen erzeugt (habe ich schon) und dann den %itunesfolder%-Tag mit Deinem Formatstring generiert und in der Datei abspeichert. Das kann ich dann auch noch manuell editieren, falls nötig.

Danach rufe ich Deine Export-Datei auf, lese dort den %itunesfolder%-Tag jeder Datei und entferne den Tag, bevor die Datei verschoben wird.

Im Prinzip könnte ich auch ein anderes, existierendes Tagfeld missbrauchen, nur das Kommentarfeld benutze ich schon anderweitig.

Sorry, wenn ich eine Nervensäge bin...

Mit der Aktion "Tag-Feld formatieren" kannst du ein Tagfeld in einer Datei anlegen, z. B. ...

Aktion "Tag-Feld formatieren"
Name: iTunesFolder
Formatstring: $ansi('Compilations'$if($eql($left(%ALBUM%,3),'Pop'),'Pop','Dance')%ALBUM%)

Diese Aktion baust du in dieselbe Aktionengruppe ein, in der die andere Aktion den Albumnamen erzeugt.
Mit einmal Aktionengruppe aufrufen werden beide Aktionen ausgeführt.

... das wäre mit dieser einen Aktionengruppe erledigt.

Das kannst du so machen, wenn du darauf achtest, die mit dem Export automatisch erzeugte CMD nicht sofort auszuführen!
Sonst müsste die Reihenfolge anders sein:

  1. Export ausführen, verschiebt die Dateien.
  2. Mit Aktion "Tag-Feld entfernen" bei den verschobenen Dateien das Hilfs-Tagfeld entfernen.

Du kannst dir den Umstand mit dem Hilfs-Tagfeld ersparen, wenn du die Konstruktion des jeweiligen Zielpfades in der Export-Datei erledigen lässt.
Beispiel:

'SET FolderPathNew=O:\TEST\'$ansi('Compilations\'$if($eql($left(%ALBUM%,3),'Pop'),'Pop\','Dance\')%ALBUM%)

DD.20140607.1821.CEST

Das hab' ich dann so gemacht.

Vor dem Schreiben der Zeile in die Playliste musste man nochmal umschalten auf UTF-8 (chcp 65001), sonst fand iTunes die Dateien nicht. Danach lief alles. Die Songs sind schon auf den SD-Karten und das Radio spielt sie anstandslos ab. :slight_smile:

Hier die endgültige Version der Export-Datei:

$filename($getEnv('USERPROFILE')'\Desktop\Mp3tag.MoveFileToFolder.cmd',ANSI)$puts(
)'@ECHO OFF'
'CLS'
'CHCP 1252 >nul'

'REM #===================================================================='
'REM # Mp3tag.MoveFileToFolder.cmd'
'REM #'
'REM # Author ©20140506.Detlev Dalitz'
'REM #--------------------------------------------------------------------'
'REM # This cmd script file has been created by the Mp3tag export feature.'
'REM # Export script file: "Export.CMD.20140506.MoveFileToFolder.mte'
'REM #--------------------------------------------------------------------'
'REM # '%_datetime%' '%_app%
'REM #===================================================================='

'REM Set iTunes media path here with trailing backslash'
'SET iTunesMediaPath=K:\Musik\iTunes\iTunes Media\'

'REM Set the complete filepathname for the list file here ...'
'SET FilePathListfile=%iTunesMediaPath%Mp3tag.Importliste.m3u'

'ECHO.'$char(7)
'CLS'
'ECHO.Move file to folder'
'ECHO.-------------------'
'IF EXIST "%FilePathListfile%" DEL "%FilePathListfile%" & ECHO.'

$loop(%_path%)
'REM Loop '%_counter%

'REM Set the new folderpathname with trailing backslash! ... use Mp3tag placeholders'
'SET FolderPathNew=%iTunesMediaPath%'$if($eql($left(%album%,3),'Pop'),'Compilations\Pop\'%album%,$if($eql($left(%album%,5),'Dance'),'Compilations\Dance\'%album%,%albumartist%\\%year% %album%))'\'
'REM above path definition puts songs with album name Pop <year> into folder %iTunesMediaPath%\Compilations\Pop\Pop <year>'

'REM songs with album name Dance <year> into folder %iTunesMediaPath%\Compilations\Dance\Dance <year>'
'REM songs with other album name into folder %iTunesMediaPath%\\%albumartist\\%year% %album%'

'REM Set the current filepathname   ... use Mp3tag placeholders'
'SET FilePathNow='%_path%

'REM Set the current folderpathname ... use Mp3tag placeholders'
'SET FolderPathNow='%_folderpath%

'REM Set the current filename       ... use Mp3tag placeholders'
'SET FileName='%_filename_ext%

'REM Set the progress counter'
'SET Progress='%_counter%
'ECHO. %Progress%: %FileName% -^> %FolderPathNew%'

'IF NOT EXIST "%FolderPathNew%" MD "%FolderPathNew%"'
'MOVE /Y "%FilePathNow%" "%FolderPathNew%" >nul'

'REM Codepage for Playlistfile must use UTF-8'
'chcp 65001 >nul'

'IF NOT ERRORLEVEL 1 ECHO.%FolderPathNew%%FileName%>>"%FilePathListfile%"'
'REM DIR /P/A/N/O "%FolderPathNew%%FileName%"'

'IF ERRORLEVEL 1 PAUSE'

'REM Codepage for filenames must use ANSI Western'
'CHCP 1252 >nul'

$loopend()

'PAUSE'
'IF EXIST "%FilePathListfile%" START "Result" /MAX "C:\Program Files (x86)\iTunes\iTunes.exe" "%FilePathListfile%"'
'DEL "%~0" 1>NUL 2>NUL & EXIT'
'REM ====================================================================='

Nochmals vielen Dank für Rat und Tat !

... und noch einmal in bunt ...

01: $filename($getEnv('USERPROFILE')'\Desktop\Mp3tag.MoveFileToFolder.cmd',ANSI)$puts(

02: )'@ECHO OFF'
03: 'CLS'
04: 'CHCP 1252 >NUL'
05: 'REM #===================================================================='
06: 'REM # Mp3tag.MoveFileToFolder.cmd'
07: 'REM #'
08: 'REM # ©20140605.Detlev Dalitz'
09: 'REM # ©20140610.dkreuer (CHCP code and iTunes adaption)'
10: 'REM #--------------------------------------------------------------------'
11: 'REM # This cmd script file has been created by Mp3tag export feature
.
'
12: 'REM # Export script file: "Export.CMD.20140605.MoveFileToFolder.mte'
13: 'REM #--------------------------------------------------------------------'
14: 'REM # '%_datetime%' '%_app%
15: 'REM #===================================================================='
16:
17: 'REM Set complete filepathname to iTunes executable file ...'
18: 'SET itunesExe=C:\Program Files (x86)\iTunes\iTunes.exe'
19:
20: 'REM Set iTunes media path with trailing backslash ...'
21: 'SET iTunesMediaPath=K:\Musik\iTunes\iTunes Media<!--colorc-->'
22:
23: 'REM Set complete filepathname for list file here ...'
24: 'SET FilePathListfile=%iTunesMediaPath%Mp3tag.Importlist.m3u8'
25:
26: 'ECHO.'$char(7)
27: 'CLS'
28: 'ECHO.Move file to folder'
29: 'ECHO.-------------------'
30: 'IF EXIST "%FilePathListfile%" DEL "%FilePathListfile%" & ECHO.'
31:
32: $loop(%_path%)
33: 'REM Loop '%_counter%
34:
35: 'REM Set new folderpathname with trailing backslash! ... use Mp3tag placeholders'
36: 'SET FolderPathNew=%iTunesMediaPath%'$if($eql($left(%ALBUM%,3),'Pop'),'Compilations\Pop<!--colorc-->'%ALBUM%,$if($eql($left(%ALBUM%,5),'Dance'),'Compilations\Dance<!--colorc-->'%ALBUM%,%ALBUMARTIST%'<!--colorc-->'%YEAR%' '%ALBUM%))'<!--colorc-->'
37:
38: 'REM Above path definition puts ...'
39: 'REM songs with album name Pop into folder %iTunesMediaPath%\Compilations\Pop\Pop '
40: 'REM songs with album name Dance into folder %iTunesMediaPath%\Compilations\Dance\Dance '
41: 'REM songs with other album name into folder %iTunesMediaPath%\%albumartist\%year% %album%'
42:
43: 'REM Set current filepathname ... use Mp3tag placeholders'
44: 'SET FilePathNow='%_path%
45:
46: 'REM Set current folderpathname ... use Mp3tag placeholders'
47: 'SET FolderPathNow='%_folderpath%
48:
49: 'REM Set current filename ... use Mp3tag placeholders'
50: 'SET FileName='%_filename_ext%
51:
52: 'REM Set progress counter'
53: 'SET Progress='%_counter%
54:
55: 'ECHO. %Progress%: %FileName% -^> %FolderPathNew%'
56:
57: 'IF NOT EXIST "%FolderPathNew%" MD "%FolderPathNew%"'
58: 'MOVE /Y "%FilePathNow%" "%FolderPathNew%" >NUL'
59:
60: 'IF NOT ERRORLEVEL 1 ('
61: ' CHCP 65001 >NUL & REM Codepage for Playlistfile must use UTF-8'
62: ' ECHO.%FolderPathNew%%FileName%>>"%FilePathListfile%"'
63: ' REM DIR /P/A/N/O "%FolderPathNew%%FileName%"'
64: ' CHCP 1252 >NUL & REM Codepage for filenames must use ANSI Western'
65: ')'
66: 'IF ERRORLEVEL 1 PAUSE'
67:
68: $loopend()
69:
70: 'ECHO.Are you ready to invoke iTunes?'
71: 'ECHO.'
72: 'ECHO.Type [Y] and press [Enter], or press just [Enter] to abort ...'
73: 'SET YesNo='
74: 'SET /P YesNo='
75: 'IF /I [%YesNo%] NEQ [Y] GOTO :CANCEL'
76:
77: 'IF EXIST "%FilePathListfile%" START "iTunes" /MAX "%iTunesExe%" "%FilePathListfile%"'
78:
79: ':CANCEL'
80: 'DEL "%~0" 1>NUL 2>NUL & EXIT'
81: 'REM ====================================================================='

DD.20140611.0828.CEST