Automatisches auslesen von Ordnern zur Listenerstellung

B

BlackTea

Neues Mitglied
Thread Starter
Dabei seit
20.12.2011
Beiträge
6
Reaktionspunkte
0
Hallo dies ist zwar mein erster Post aber ich verfolge bzw. nutze MacUser schon was länger :)

Nun hab ich vor einiger Zeit hier mal ein Skript gefunden mit dem man Ordnerstrukturen automatisch auslesen und als Liste in TextEdit ausgeben lassen kann.

Nach längerer Nutzung hab ich mich mal ohne nennenswerte Programmierkenntnisse daran gesetzt den Code ein wenig zu modifizieren, und zwar hab ich versucht die Datei/Ordnergröße mit ausgeben zu lassen.

Das hat so auch ganz gut geklappt, auch wenn es vielleicht auch einfacher geht.

Nun zu meinem Problem:
Ich bekomme wenn ich beispielsweise 4 Sub-Ordner hab bekomme ich das erhoffte Ergebnis, bei einem Test mit ca. 390 Sub-Ordnern bekomme ich die Fehlermeldung:

missing value kann nicht in typ real umgewandelt werden.

Hier das modifizierte Skript das ich im Automator gebastelt habe:
Code:
on run {input, parameters}
	set output to {}
	repeat with i in input
		tell application "Finder"
			set iname to the name of i as string
			set MBSize to ((round ((the size of i) / 1024 / 1024) * 100) / 100)
			if MBSize < 1024 then
				set end of output to iname & " " & MBSize & "MB"
			else
				set GBSize to ((round (MBSize / 1024) * 100) / 100)
				set end of output to iname & " " & GBSize & "GB"
			end if
		end tell
	end repeat
	return output
end run

Ich hoffe das ihr mir helfen könnt.

MfG BlackTea
 
Hallo!
Der Finder kann die Größe von Ordnern nicht (schnell genug?) lesen...
Am besten, man macht das mit einem Shell Skript und dem Befehl du
Ansonsten mit System Events:

Code:
on run {input, parameters}
	set output to {}
	repeat with i in input
		tell application "System Events"
			set iname to the name of i
			set xs to size of disk item (i as string)
		end tell
		set MBSize to ((round xs / 1024 / 1024) * 100) / 100
		if MBSize < 1024 then
			set end of output to iname & " " & MBSize & "MB"
		else
			set GBSize to ((round (MBSize / 1024) * 100) / 100)
			set end of output to iname & " " & GBSize & "GB"
		end if	
	end repeat
	return output
end run

Falls relevant: Seit 10.6 sind Bytes in Dezimal-Angaben. 1 KB = 1000 Bytes

Gruß
 
Wenn ich das richtig erfasse drüfte es also daran liegen das die größere Anzahl Ordner auf einer externen Festplatte liegt, da die Ordnergrößen vom Finder ja erst bei Zugriff auf den übergeordneten Ordner die Größen berechnet...

Dann versuch ich mal eben was :)

Edit: So ich hab mal eben das Programm getestet nachdem ich den Finder die Ordnergrößen auf der Externen Festplatte hab berechnen lassen
und es funktioniert ^^, was mich doch sehr freut.

Dennoch werd ich wohl deine Änderung mal mit einfügen damit nicht nur ich sondern auch meine Familie damit umgehen kann ;)

Vielen Dank für die Hilfe, so konnte ich ja den Fehler verstehen und hab wieder was gelernt :D
 
Zuletzt bearbeitet:
Am besten, man macht das mit einem Shell Skript und dem Befehl du

Einfacher geht's tatsächlich mit 'du' (ungetestet):

Code:
[FONT="Verdana"][size=2][b]on[/b] [color=#0000FF][b]run[/b][/color] {[color=#3F7F00]input[/color], [color=#3F7F00]parameters[/color]}
	[b]set[/b] [color=#3F7F00]output[/color] [b]to[/b] {}
	[b]repeat[/b] [b]with[/b] [color=#3F7F00]an_item[/color] [b]in[/b] [color=#3F7F00]input[/color]
		[b]set[/b] [b]end[/b] [b]of[/b] [color=#3F7F00]output[/color] [b]to[/b] [color=#0016B0][b]do shell script[/b][/color] "du -hd 0 " & [color=#6C04D4]quoted form[/color] [b]of[/b] [color=#6C04D4]POSIX path[/color] [b]of[/b] [color=#3F7F00]an_item[/color]
	[b]end[/b] [b]repeat[/b]
	[b]return[/b] [color=#3F7F00]output[/color]
[b]end[/b] [color=#0000FF][b]run[/b][/color][/size][/FONT]
 
Zurück
Oben Unten