VBScript Profil Ordner Größe anzeigen

0cool
Goto Top
Hallo Leute,

Ein paar Infos zum Anfang:

OS = Vista
Profilart = Lokales Profil
Scriptspache = VBScript

Ich muss mir die größe des Profilordners des angemeldeten Profils anzeigen lassen.

Wie bekomme ich das hin?

Mein Versuch war:


Bei diesem Script bekomme ich die Meldung:
Fehler: Erlaubnis verweigert
Code: 800A0046
Quelle: Laufzeitfehler in Microsoft VBScript

Ich finde keinen Fehler. Wenn ich den Pfad zu dem Profilordner mit Profilname Statisch angebe kommt die gleich Meldung. Nehme ich einen anderen Ordner den ich selbst erstellt habe, klappt es wunderbar.

Meine Frage an euch: Wie bekomme ich es hin das ich mir die größe des Profil anzeigen lassen kann?

Danke für eure Hilfe

0cool

Content-Key: 161245

Url: https://administrator.de/contentid/161245

Ausgedruckt am: 04.07.2022 um 14:07 Uhr

Mitglied: Biber
Biber 21.02.2011 um 17:42:49 Uhr
Goto Top
Moin 0cool,

ausgehend von deinem Ansatz würde es so vielleicht weiter kommen:

...obwohl..... DER Schnipsel würde meine (geringen) Anforderungen bezüglich Les-, Wart- und Nachvollziehbarkeit nicht vollständig erfüllen.

Ich habe keinerlei Vermutung, wie du an diesem sich dröge zu Ziel schleppenden Ge(l)eieres nach 3 oder 4 Wochen mal eine Anpassung vornehmen willst?
Der kostet doch mehr Zeit beim Lesen als bei der Ausführung...

Grüße
Biber
Mitglied: bastla
bastla 21.02.2011 um 17:46:37 Uhr
Goto Top
@Biber
Geht, fürchte ich, aber am Kernproblem vorbei - zumindest erhalte ich (unter W 7) mit
für Zeile 4 ebenfalls einen "Access denied"-Fehler ...

Grüße
bastla
Mitglied: Biber
Biber 21.02.2011 um 19:24:02 Uhr
Goto Top
Moin bastla,

okay, ich hatte mehr diese fehlenden/doppelten/um Vorrang streitenden Objekte in dem Codegestrunkele in Verdacht, a
ber es könnte natürlich auch ein Problem der Virtualisierung sein.
Unterhalb des Profilpfads können sich ja durchaus auch virtualisierte Ordner befinden, das wiederum könnte man/frau überprüfen unter
HKEY_CURRENT_USER\Software\Classes\VirtualStore

Allerdings glaube ich nicht, dass das FileSystemObject irgendwie entscheiden kann, ob es sich um "physisch vorhandene Ordner" oder Links/Aliase/Verzeichnisse außerhalb der Unterordnerstruktur handelt.

Zur Lokalisierung der Fehlerursache fiele mir nur ein, die %userprofile%-Unterstruktur rekursiv durchzuwackeln und bei jedem Unterodner entweder die Größe oder aber "Ins Mett gehauen" auszugeben.
Oder auf Windows 8/9/10 zu warten.

Grüße
Biber
Mitglied: bastla
bastla 21.02.2011 um 19:36:19 Uhr
Goto Top
Hallo Biber!
Zur Lokalisierung der Fehlerursache fiele mir nur ein, die %userprofile%-Unterstruktur rekursiv durchzuwackeln und bei jedem Unterodner entweder die Größe oder aber "Ins Mett gehauen" auszugeben.
ACK, wobei allerdings, im Gegensatz zu einem "dir", ja mit ".Size" auch alle unterhalb des betrachteten Ordners liegenden Objekte erfasst werden, was eine tatsächliche Berechnung dann etwas mühsamer werden ließe ...

Grüße
bastla
Mitglied: 0cool
0cool 21.02.2011 um 19:47:24 Uhr
Goto Top
Hey Ihr beiden,

danke das Ihr euch so einsetzt.

Es muss nicht auf dem Weg gehen den ich eingeschlagen habe, vielleicht gibt es einen anderen Weg über den WSH oder irgend eine anderen Weg. Wie ich da hinkomme ist mir relativ egal, das einzige was zählt ist das der Weg mit den Boardmitteln von Vista zubeschreiten sein sollte.

Der Hintergrund ist das ich ein Script geschrieben habe das über robocopy das Profil wegsichert. Und da die Profile um die es geht unterschiedlich groß sind und die Kollegen die das Script benützen wissen wollen wie lange der Kopiervorgang noch dauert, soll eine Statusanzeige her.

Jetzt hab ich mir gedacht, okay ich lese die größe des Profilordners aus und vergleiche Sie mit der Größe des Zielordners. Aus den beiden Ergebnissen bastele ich mir dann eine Statusanzeige.

Jetzt lässt sich blöderweise die Profilgröße nicht auslesen, zumindest nicht auf den Weg den ich bisher versucht habe. Aber vielleicht bin ich auch auf dem Holzweg und es gibt eine einfacheren Weg.

Und genau an der Stelle benötige ich eure Hilfe. Was Das Scripten von VBScript angeht bin ich noch ziemlich am Anfang, deshalb bin ich gerade auch ein bisschen ratlos.

Gruß

0cool
Mitglied: Biber
Biber 21.02.2011 um 20:51:43 Uhr
Goto Top
Ja nee, bastla,

ich bin zwar nicht der VBSkript-Fan, aber sooo komplex stell ich es mir nicht vor.
Wenn es darum geht, eben mal den/die schuldigen Ordner oder Pseudoordner zu finden, dann wäre mein Quick'n'Dirty-Schnellschuss


Zeile 22/23 kann man/frau auch wieder ent-kommentieren, weil ja sonst gar nix flimmert im OK-Fall.

So in etwa würde ich die Problematik versuchen einzugrenzen.
Ich kann es an diesem Rechner aber nicht mit Win7 testen - der PC ist so alt wie guter Whisky auch mindestens sein muss...

Grüße
Biber

[Edit] @bastla ...Und ich kasper hier rum mit diesem neumodischen VBSkript-Geraffel... face-wink [/Edit]
Mitglied: bastla
bastla 21.02.2011 um 20:52:33 Uhr
Goto Top
Hallo 0cool!

Schönheitspreis lässt sich damit zwar keiner gewinnen, aber zur Not sollte es tun:
Es wird ganz einfach per CMD
ausgeführt und das Ergebnis in VBS ausgewertet - direkt per Batch ginge das natürlich auch (und, wie fast immer im Vergleich mit VBS, etwas kompakter):
Grüße
bastla
Mitglied: 0cool
0cool 22.02.2011 um 10:18:33 Uhr
Goto Top
@Biber: Danke dein Script bringt mich weiter.

<edit>
@bastla: auch dir vielen dank für deine Mühe.

Ich habe man deine Quellcode genommen und eine Zeile hinzugefügt. Mein Ziel war ein Ergebniss zubekommen, in KB


Das Ergebniss war etwas kommisch, da die letzten 5 stellen so aussahen: E- 03

Was gibt den dein Script aus, bzw warum bekomme ich bei meiner Berechnung den angegebenen Wert raus?

</edit>


Gruß

0cool
Mitglied: Biber
Biber 22.02.2011 um 17:53:38 Uhr
Goto Top
Moin 0cool,

zwei kleine Tipps von mir...
Erstens bekommt es kein Mitleser mit, wenn du morgens um halbig 11 einen Kommentar schreibst
und dann irgendwann Stunden später eine Folgefrage in diesen Kommentar reineditierst.
Da schreib dann lieber NOCH einen Kommentar .... was soll's.
Den Klimawandel kannst du eh auch mit einem editierten Kommentar ebensowenig aufhalten wie ich mit meinem Beitragsrecycling.

Zweiter Tipp: verwende die "Round()"-Funktion, sonst geht eben bei zu kleinen Werten VBScript davon aus, dass dir die Rechengenauigkeit
mit so vielen Stellen wie möglich ["2,6789013 TeraByte mal 1/1000"] wichtiger ist als eine Anzeige "0,00 Terabyte"

Prüfe es doch vorher trocken mit einer Spiel-Varsize

Ausgabe

Wenn du kein "Round()" verwendest, dann wird dir irgendwann das wissenschaftliche Format "E -03".. " E -04",
also "mal 10 hoch minus 3" etc angezeigt.

Grüße
Biber
Mitglied: 0cool
0cool 22.02.2011 um 18:20:18 Uhr
Goto Top
@Biber: vielen Dank für den Tipp. Das runden werde ich gleich morgen ausprbieren.

Gruß

0cool
Mitglied: 0cool
0cool 04.03.2011 um 14:32:01 Uhr
Goto Top
@Biber: Ichabs ausprobier, klappt wunderbar.

Ich bedanke mich bei allen und schliesse hiermit das Thema.