In einer Aktion die Größe eines Verzeichnis ermitteln?

Die Abtrennung funktioniert doch aber nicht :unsure: ; was mache ich falsch? Ich bekomme die kpl. Summe des Verzeichnisses indem meine FLAC's liegen inkl. des Verzeichnisses "artwork" (in dem diverse *.jpg's und *.txt - Dateien liegen; in der Regel ca. 40-50 MB groß).
Nochmal ein Beispiel:

z:\vinyl\reggae\Bob Marley & The Wailers\ Catch A Fire - [1973]\artwork

Das Verzeichnis: z:\vinyl\reggae\Bob Marley & The Wailers\ Catch A Fire - [1973] --> ist 965 MB groß;
das Verzeichnis: z:\vinyl\reggae\Bob Marley & The Wailers\ Catch A Fire - [1973]\artwork --> ist 7 MB groß

Hier der Header meiner Export-mte:

$filename(txt,utf-8)
%artist% - %album% (%year%)
Vinyl rip in 24-bit/96 khz | %NUMBER_LP% LP(s) %DISCOGS_FORMAT% %LP_WEIGHT%
Artwork ?? MB| DR-Analysis | %_total_size% | FF
%genre%, %STYLE% | Original %DISCOGS_COUNTRY% Pressing | %LABEL% - %DISCOGS_CATALOG% 

(Ich muss dazusagen, dass ich mittlerweile fast alles mit $if, $if2 verfeinert habe, da nicht alle Felder belegt sind)

An der Stelle der beiden roten Fragezeichen sollte der Code für die Berechnung des Unterverzeichnisses stehen!

Die Ausgabe des ganzen sieht wie folgt aus:

Bob Marley & The Wailers - Catch A Fire (1973/2010)
Vinyl rip in 24-bit/96 khz | 1 LP(s) Album 200 Gram
Artwork ?? MB| DR-Analysis | 965,59 MB | FF
Reggae, | Original Pressing | -  

An der Stelle der beiden blauen Fragezeichen sollte der Wert der Berechnung des Unterverzeichnisses > 7 MB < stehen!

Dieser Export wird nur einmalig ausgeführt! Deshalb spielt es für mich keine Rolle ob sich im laufe der Zeit die Größe des Verzeichnisses ändert, ist auch von Größe her Vernachlässigbar; solange ich nicht darin rumspiele ... eigentlich nie wieder. :wink:

Sorry, aber den Einsatz von $put etc. hab ich immer noch nicht kapiert :wink:

Nochmals besten Dank an alle!

Betrifft nur Mp3tag Export.
Mit $put() und $puts() lassen sich benutzerdefinierte Variablen anlegen, die mit Werten belegt sind, die mit $get() wieder verwendet werden können.
Hierbei ist zu beachten, dass die "Sichtbarkeit" solcher Variablen recht eigenartig gestaltet ist, z. B. nur innerhalb einer $loop() ... $loopend() Konstruktion.

Siehe dort ...
Extract weekdays and month names from timestamp
... und lese weiter ...
Extract weekdays and month names from timestamp

Export, $Puts() is executed always
$if script-befehl mit $puts script-befehl
Check if field value is identical for all selected tracks

DD.20141217.1647.CET

Für das folgende Skript Beispiel musst du vorher in "Mp3tag\Extras\Optionen\Tags" bei der Liste der Dateitypen hinzufügen den Dateityp: *.jpg;

Reihenfolge ...
... alle Dateien laden in Mp3tag (Musik und Bilder),
... alle Dateien auswählen,
... Exportskript ausführen,
... Ergebnis betrachten.

01: $filename($getEnv('USERPROFILE')'\Desktop\Test.CoverSize.txt',UTF-8)$puts(

02: )$loop(1,1)$puts(crlf,$char(13)$char(10))$puts(br,'{br}')$loopend()$replace(
03: 'T_e_s_t'$get(br)$get(br)
04:
05: $loop(%_path%)$replace(
06:
07: $puts(Sum_CountFiles,$if($neql($lower(%_extension%),'jpg'),$add(1,$get(Sum_CountFiles)),$get(Sum_CountFiles)))
08: $puts(Sum_CountCovers,$if($eql($lower(%_extension%),'jpg'),$add(1,$get(Sum_CountCovers)),$get(Sum_CountCovers)))
09: $puts(Sum_CoverSize,$if($eql($lower(%_extension%),'jpg'),$add(%_file_size_kb%,$get(Sum_CoverSize)),$get(Sum_CoverSize)))
10:
11: $get(br)
12: 'Path = '%_path%$get(br)
13: $if($eql($lower(%_extension%),'jpg'),
14: 'CountCovers : '$get(Sum_CountCovers)$get(br)
15: 'SumCovers MB: '$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0))$get(br),
16: 'CountFiles : '$get(Sum_CountFiles)$get(br))
17:
18: ,$get(crlf),,$get(br),$get(crlf))$loopend()
19:
20: $get(br)
21: '---------------------------'$get(br)
22: 'SumCovers MB: '$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0))$get(br)
23: 'CountCovers : '$get(Sum_CountCovers)$get(br)
24: 'CountFiles : '$get(Sum_CountFiles)$get(br)
25: 'CountAll : '$add($get(Sum_CountCovers),$get(Sum_CountFiles))$get(br)
26:
27: ,$get(crlf),,$get(br),$get(crlf))

Das Export Skript verwendet Tricks, die in der offiziellen Mp3tag Hilfe nicht dokumentiert sind, ...
aber im Forum hier und da schon gezeigt worden sind.
Du kannst das Skript anpassen wie du willst ... vor der Ausführung die Zeilennummern entfernen.

Am Ende der Export-Liste kommt dann so etwas heraus ...

SumCovers MB: 86 CountCovers : 262 CountFiles : 139 CountAll : 401

DD.20141217.1940.CET

Besten Dank für das Beispiel. Ich kann/konnte es erst heute Morgen testen (wir hatten gestern unser Weihnachtsessen im Kollegenkreis).
Ich werde es in jedem Fall im laufe des Tages testen, steige zwar noch nicht ganz durch den Code, aber ich wühle mich erst einmal durch, ansonsten melde ich mich :wink:

So ... ich habe getestet, nach gefühlten Stunden konnte ich deinen Code soweit zusammen trimmen das jetzt tatsächlich die "gerundete" Verzeichnisgröße "artwork" ausgegeben wird!

Hier der von mir zusammen "gestauchte" Code: (alles in einer Zeile)

$puts()$loop(1,1)$loopend()$replace($loop(%_path%)$replace($puts(Sum_CoverSize,$if($eql($lower(%_extension%),'jpg'),$add(%_file_size_kb%,$get(Sum_CoverSize)),$get(Sum_CoverSize)))$if($eql($lower(%_extension%),'jpg'),$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0)),$get(Sum_CountCovers))$get(Sum_CountFiles))$loopend()$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0))

Hier meine Export mte (ein Teil davon)

$filename($getEnv, txt,utf-8)

%artist% - %album% $if(%RERELEASE%,(%year%/%RERELEASE%),(%year%)) Vinyl rip in 24-bit/96 khz | %NUMBER_LP% LP(s) $if2(%DISCOGS_FORMAT%,) - %LP_WEIGHT% DR-Analysis | %_total_size% incl. Artwork $puts()$loop(1,1)$loopend()$replace($loop(%_path%)$replace($puts(Sum_CoverSize,$if($eql($lower(%_extension%),'jpg'),$add(%_file_size_kb%,$get(Sum_CoverSize)),$get(Sum_CoverSize)))$if($eql($lower(%_extension%),'jpg'),$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0)),$get(Sum_CountCovers))$get(Sum_CountFiles))$loopend()$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0)) MB| | FF %genre%, %STYLE% | Original %DISCOGS_COUNTRY% Pressing | %LABEL% - %DISCOGS_CATALOG%

Ausgabe mit dem neuen Code:

- () Vinyl rip in 24-bit/96 khz | LP(s) - DR-Analysis | 6,13 MB incl. Artwork 7 MB| | FF

Jetzt fehlen die Tags aus den Flac's, bzw. der Wert aus %_total_size% wird auch nicht mehr ausgegeben; statt 965,59 MB die echten 6,13 MB der jpg's?

Aussehen sollte es so:

Bob Marley & The Wailers - Catch A Fire (1973/2010) Vinyl rip in 24-bit/96 khz | 1 LP(s) Album - 200 Gram DR-Analysis | 965,59 MB incl. Artwork ?? MB| | FF Reggae, | Original Pressing | -

 

die kursiv dargestellten Daten kommen aus Tags; der unterstrichene Part kommt aus der Funktion %_total_size%!

Was mache ich noch falsch?

Bei mir kommt mit dem "gestauchten Code" nur Murks heraus, u. a. auch wegen syntaktischer Fehler, z. B. ist $replace nicht richtig angewendet und unsinnig, $puts() ist überflüssig in deinem Skript.

Wenn du das folgende Exportskript zum Laufen bringst, dann hast du einen Ansatz, mit dem du weiter experimentieren kannst.

1: $filename($getEnv('USERPROFILE')'\Desktop\Test.CoverSize.txt',UTF-8)

2: $loop(%_path%)$puts(Sum_CoverSize,$if($eql($lower(%_extension%),'jpg'),$add(%_file_size_kb%,$get(Sum_CoverSize)),$get(Sum_CoverSize)))$loopend()
3: 'CoverSize : '$get(Sum_CoverSize)' KB'
4: 'CoverCount: '%_max_counter%

DD.20141218.2010.CET

Entschuldige, aber ich habe lediglich deinen Code soweit gestaucht bis es für mich passte. Kapiert habe ich eh nur die Hälfte, hat ziemlich lange gedauert bis ich es soweit hinbekommen hatte.

Aber auch vielen Dank für deine neue Version.
Leider führt auch diese dazu dass alle anderen Tags nicht mehr ausgelesen und exportiert werden, warum auch immer?
Ich glaube jetzt gebe ich ganz auf!
Trotzdem nochmals meinen allerherzlichsten Dank an alle Beteiligten. Ich wünsche allen ein Besinnliches Weihnachtsfest und alles Gute für 2015. Auf weitere spannende MP3TAG Fragen, Antworten, Wünsche, Beiträge etc. …

Vielleicht eine zweite $loop Schleife für die Musikdateien?

DD.20141219.1155.CET

Ich danke dir, hatte ich auch versucht, aber meine Kenntnisse sind nicht so berauschend. Vielleicht versuche ich es noch einmal im Stillen Kämmerlein (über Weihnachten habe ich genügend Zeit) :wink:
Aber ich denke, ein "rechter Mausklick" auf den Ordner --> Eigenschaften --> Wert merken und in meine Export-Datei reinschreiben … geht fix von der Hand.
Nochmals besten Dank! :slight_smile: :slight_smile: :slight_smile:

Hier ist noch etwas mehr zum Zähne ausbeißen ...

01: $filename($getEnv('USERPROFILE')'\Desktop\Test.CoverSize.txt',UTF-8)$puts(

02: )$loop(1,1)$puts(crlf,$char(13)$char(10))$puts(br,'{br}')$loopend()$replace(
03: 'T_e_s_t'$get(br)$get(br)
04:
05: $puts(Out_Artist,%ARTIST%)
06: $puts(Out_Album,%ALBUM%)
07: $puts(Out_YEAR,%YEAR%)
08:
09: $loop(%_path%)$replace(
10: $puts(Sum_CountFiles,$if($neql($lower(%_extension%),'jpg'),$add(1,$get(Sum_CountFiles)),$get(Sum_CountFiles)))
11: $puts(Sum_CountCovers,$if($eql($lower(%_extension%),'jpg'),$add(1,$get(Sum_CountCovers)),$get(Sum_CountCovers)))
12: $puts(Sum_CoverSize,$if($eql($lower(%_extension%),'jpg'),$add(%_file_size_bytes%,$get(Sum_CoverSize)),$get(Sum_CoverSize)))
13: $puts(Sum_FileSize,$add(%_file_size_bytes%,$get(Sum_FileSize)))
14: ,$get(crlf),,$get(br),$get(crlf))$loopend()
15:
16: $puts(Sum_CoverSizeKB,$add($div($get(Sum_CoverSize),1024),$ifgreater($mod($get(Sum_CoverSize),1024),0,1,0)))
17: $puts(Sum_CoverSizeMB,$add($div($get(Sum_CoverSize),$mul(1024,1024)),$ifgreater($mod($get(Sum_CoverSize),$mul(1024,1024)),0,1,0)))
18: $puts(Sum_FileSizeMB,$add($div($get(Sum_FileSize),$mul(1024,1024)),$ifgreater($mod($get(Sum_FileSize),$mul(1024,1024)),0,1,0)))
19:
20: 'CountCovers: '$get(Sum_CountCovers)$get(br)
21: 'CountFiles : '$get(Sum_CountFiles)$get(br)
22: 'CountAll : '$add($get(Sum_CountCovers),$get(Sum_CountFiles))$get(br)$get(br)
23:
24: $get(Out_Artist)' - '$get(Out_Album)' - ('$get(Out_YEAR)')'$get(br)
25: 'Artwork : '$get(Sum_CoverSizeKB)' KB'$get(br)
26: 'Artwork : '$get(Sum_CoverSizeMB)' MB'$get(br)
27: 'Total Size : '$get(Sum_FileSizeMB)' MB'$get(br)
28: 'Label/Cat. : '%LABEL%[' - '%DISCOGS_CATALOG%]$get(br)
29: 'Pressing : ''Original'[' '%DISCOGS_COUNTRY%]' Pressing'$get(br)
30: 'Genre/Style: '%GENRE%[', '%STYLE%]$get(br)
31:
32: ,$get(crlf),,$get(br),$get(crlf))

Die Ausgabe sieht so aus:

T_e_s_t

CountCovers: 2
CountFiles : 14
CountAll : 16

Wham! - The Best Of Wham! - (1997)
Artwork : 23 KB
Artwork : 1 MB
Total Size : 132 MB
Label/Cat. :
Pressing : Original Pressing
Genre/Style: Pop, Pop/Rock Adult Contemporary New Wave

DD.20141219.1722.CET