Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Eigenschaften beliebiger Dateien mit Visual Basic auslesen.

Mic2004 / 8 Antworten / Baumansicht Nickles

Hallo Leute!

Für ein kleines Tool, welches ich mir mit Visual Basic (als Anfänger) bastle, bin ich momentan auf der Suche nach einer einfachen Möglichkeit, Dateieigenschaften aus einer Datei beliebigen Formats auszulesen. Dabei geht es mir um Dinge wie Dateiname, Speicherort, Dateigröße (MB), Erstellungsdatum, Datum der letzten Änderung.

Bisher habe ich beim googeln durch das Internet nur Beispiele gefunden, wie man das mit MS-Office-Dateien machen kann. Bei Microsoft, kann man beispielsweise ein Beispieltool namens DsoFileSetup_KB224351_x86.exe herunterladen, womit die Befehle um DsoFile erklärt sind. Dieses Toll kann aber nur mit Office-Files umgehen. Möchte man eine andere Datei damit untersuchen zeigt es einfach nichts an. Außerdem ist es für meine Zwecke viel zu ausführlich und kompliziert programmiert. Die vielen "zusätzlichen" Eigenschaften von Office-Dateien brauche ich ja gar nicht.

Ich hoffe von euch kann mir da einer einen einfachen Tipp geben. Für einen kleinen Beispielquellcode, wie man die einzelnen Eigenschaften auf ein Textfeld legt, wäre ich am meisten dankbar.

Grüße,
Mic2004.

bei Antwort benachrichtigen
d-oli Mic2004 „Eigenschaften beliebiger Dateien mit Visual Basic auslesen.“
Optionen

... VB .NET ...???

Dann schau mal da vorbei: http://technet.microsoft.com/de-de/library/system.io.aspx

Gruss, d-oli

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
Mic2004 d-oli „... VB .NET ...??? Dann schau mal da vorbei:...“
Optionen

Hmm... Und was genau von all diesen vielen Befehlen, ist nun der Richtige für mich?

bei Antwort benachrichtigen
T-Rex Mic2004 „Hmm... Und was genau von all diesen vielen Befehlen, ist nun der Richtige für...“
Optionen

In welcher Sprache programmierst Du?

Für VB6:
Verzeichnis- und Dateiattribute ermitteln
Dateizeiten manipulieren

 GrüßeT-Rex 
bei Antwort benachrichtigen
Mic2004 T-Rex „In welcher Sprache programmierst Du? Für VB6: Verzeichnis- und Dateiattribute...“
Optionen

Hallo!

Ja, es ist Visual Basic 6. Ich möchte aber nicht die Dateiattribute ermitteln, sondern Eigenschaften. Im Grunde genommen so, wie es Windows auch selbst macht:



Grüße,
Mic2004.
bei Antwort benachrichtigen
d-oli Mic2004 „Hallo! Ja, es ist Visual Basic 6. Ich möchte aber nicht die Dateiattribute...“
Optionen

... hallo?

ENGLISCH: attribute DEUTSCH: die Eigenschaft QUELLE: www.leo.org

Hast Du keine automatische Code completion? Einfach den Objektnamen eingeben, dann ein "." ... und sehen was daher kommt. So nach der Art "try and error". Programmieren zu lernen heisst auch viel lesen und probieren, probieren, probieren ...

Gruss, d-oli

PS: ein paar Denkanstösse ...
- Dim FSO As New FileSystemObject
- Dim File As File
- Set File = FSO.GetFile("C:\etc.lol")
- CStr(File.Type) 'Datei-Typ
- CStr(File.ParentFolder) 'Pfad
- CStr(File.Name) 'Dateiname
- CStr(File.DateCreated) 'Erstellt am
- CStr(Format(File.Size, "#,##0")) & " Bytes"

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
Mic2004 Nachtrag zu: „Eigenschaften beliebiger Dateien mit Visual Basic auslesen.“
Optionen

Hallo zusammen!

Ich habe es jetzt ganz gut so hinbekommen, wie ich es mir vorgestellt hatte. Man muss eben doch etwas tiefer einsteigen. Mit den VB6-Befehlen kommt man nicht weiter, man muss sich der API bedienen, dann kann man die Eigenschaften, die ich gern sehen wollte, anzeihen lassen.

Komisch verhält sich die Sache nur, wenn die besagte Datei gerade von einem anderen Programm benutzt wird. Da gibt es zwei Möglichkeiten, wie die Befehle dann falsch reagieren.
1.) Wenn die Datei auf demselben Rechner ist, wie das VB-Tool, dann werden alle Daten als "30.12.1899 00:00:00" angezeigt.
2.) Wenn man die Datei übers Netzwerk von einem anderen Rechner öffnet, dann zeigt es ein völlig aus der Luft gegriffenes Datum (was aber real aussieht) an.

Eine Frage aber mal noch. Mit dem Befehl FileLen(C:\Test.txt) kann man sich die Dateigröße (in Byte) einer Datei anzeigen lassen. Leider werden diese Zahlen bei großen Dateien dann recht unübersichtlich. Wie kann man evtl. in die angezeigten Zahlen einen Punkt als Tausendertrennzeiche (dass aus 100000000 eine 100.000.000 wird) einfügen?

Grüße,
Mic2004.

bei Antwort benachrichtigen
d-oli Mic2004 „Hallo zusammen! Ich habe es jetzt ganz gut so hinbekommen, wie ich es mir...“
Optionen
... man muss sich der API bedienen...
.lass mich raten, mit FileSystemObject?

...Tausendertrennzeiche (dass aus 100000000 eine 100.000.000 wird) einfügen?
Siehe oben oder lies das: http://www.vbarchiv.net/commands/Format.php

d-oli
Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
Mic2004 d-oli „ .lass mich raten, mit FileSystemObject? Siehe oben oder lies das:...“
Optionen

Hallo!

Ähm... Nee... Da steht nix von FileSystemObject.

Danke für den Tipp. So kann man es besser lesen. ;o)

Gibt es eigentlich auch eine Möglichkeit vorzugeben, in welcher Reihenfolge man mit der Tab-Taste von Eingabefeld zu Eingabefeld springt oder geht das immer nunr nach vorgegebener Reihenfolge?

Grüße,
Mic2004.

bei Antwort benachrichtigen