farmer
Goto Top

Die Eigenschaften einer Datei mit einer Batchdatei auslesen

Eigenschaften eine Datei per cmd auslesen und weiterverarbeiten

Hallo

wenn ich mir z.B. bei der Datei kentbcli.exe die eigenschaften anzeigen lasse, habe ich mehrere Registerkarten
(Allgemein, Version, Kompatibilität, Sicherheit, Dateiinfo)
f55415ceabcef6cce597953def7aaaa9-eigenschaften
unter dem Register Version bekomme ich z.B. die Versionsnummer angezeigt.
Ist es möglich diese Anzeige per cmd auszulesen????
so in der Art:
dir kentbcli.exe /Version
und bekomme dann angezeigt:

Version:4.00.54


oder so ähnlich.

vielen Dank schon mal im voraus

mfg
Farmer

Content-Key: 29923

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

Printed on: April 24, 2024 at 11:04 o'clock

Member: Beli23
Beli23 Jul 20, 2006 at 07:58:12 (UTC)
Goto Top
Mich würde es auch sehr interressieren ob es da im CMD etwas gibt! Aber so wie es aussieht wohl nicht!
Member: sub273
sub273 Jan 13, 2007 at 16:55:30 (UTC)
Goto Top
Keine Antwort = Es ist nicht möglich ?

Ich würde auch gerne nicht nur den Dateinamen z.B mit

dir C:\pfadZuDenDateien /B >> dateiListe.txt

sondern auch die Dateieigenschaften, insbesondere den Kommentar in die Datei schreiben. Irgendwie ist das recht schwer zu finden ;)

Wäre schön wenn jemand etwas genaueres weiß.
Member: Biber
Biber Jan 14, 2007 at 18:19:32 (UTC)
Goto Top
Moin alle,

die Formulierung "Geht nicht" im Zusammenhang mit Batch-Skripting solltet ihr in diesem unseren Forum sparsamer verwenden...

Die Einschränkung ist allerdings, dass die so genannten Extended File Properties naturgemäß nur unter NTFS-Filesystemen zur Verfügung stehen und deshalb auch nur den Skript-Sprachen zugänglich sind, die dieses File-System kennen. Die CMD.exe als Command-Interpreter fällt da raus - mit der PowerShell als Shell wird es wieder möglich sein.

Mögliche Variante vom CMD-Prompt aus ist ein Billich-VBSkript.

Beispiel:
' ---snipp GetExtFilePropsInFolder.vbs  
Dim arrHeaders(34)
Set objShell = CreateObject("Shell.Application")  
Set objFolder = objShell.Namespace(Wscript.arguments(0))
For i = 0 to 33
    arrHeaders(i) = objFolder.GetDetailsOf(objFolder.Items, i)
Next
For Each strFileName in objFolder.Items
    For i = 0 to 33
        Wscript.echo i & vbtab & arrHeaders(i) _
            & ": " & objFolder.GetDetailsOf(strFileName, i)   
    Next
Next
' ---snapp GetExtFilePropsInFolder.vbs  

Dieser Schnipsel listet beim Aufruf vom CMD-Prompt mit:
cscript //nologo GetExtFilePropsInFolder.vbs d:\MeineMusi
...alle Extended File Properties der Dateien in "d:\MeineMusi" auf.

HTH
Biber
Member: sub273
sub273 Jan 15, 2007 at 10:10:18 (UTC)
Goto Top
Vielen, vielen Dank ! Das hat mir wirklich sehr geholfen ! (Formatieren der Ausgabe ist mir tatsächlich selbst gelungen ;))
Member: Biber
Biber Jan 15, 2007 at 10:27:27 (UTC)
Goto Top
Moin sub273,

dann lass uns an Deiner Musterlösung teilhaben bitte... face-wink

Grüße
Biber
Member: sub273
sub273 Jan 15, 2007 at 15:46:27 (UTC)
Goto Top
Gerne, wobei ich ja eigentlich nichts selber gelöst habe ;)

Ich brauchte eine Textdatei im Format:

dateiname kommentar
dateiname kommentar
....

Also lese ich nur die beiden benötigten Felder aus und schreibe sie in eine Zeile:

Dim arrHeaders(34)
Set objShell = CreateObject("Shell.Application")  
Set objFolder = objShell.Namespace(Wscript.arguments(0))

arrHeaders(0) = objFolder.GetDetailsOf(objFolder.Items, 0)
arrHeaders(14) = objFolder.GetDetailsOf(objFolder.Items, 14)

For Each strFileName in objFolder.Items
   
    Wscript.echo objFolder.GetDetailsOf(strFileName, 0) &" "& objFolder.GetDetailsOf(strFileName, 14)  
    
Next

Aufrufen tue ich das Ganze mit:
cscript //nologo NameDesSkripts.vbs c:\PfadZuDenDateien >> Dateiliste.txt
(was ich in eine bat-Datei gepackt habe)

Also keine eigene Leistung, sondern nur Verstümmelung deines Skriptes. ;)

Zwar nicht wirklich elegant aber für meine Zwecke vollkommen ausreichend. Eigentlich wäre es schön wenn ich die einzelnen Strings noch bearbeiten könnte (Abschneiden der Dateiendungen), aber das übersteigt im Moment das Zeit <->Nutzen Verhältnis.

Also: Vielen Dank nochmal ! face-smile
Member: bastla
bastla Jan 15, 2007 at 19:00:11 (UTC)
Goto Top
Hallo sub273!

Entschuldige, wenn ich hier noch reinplatze, aber vielleicht wäre das "Zeit <->Nutzen Verhältnis" für einen Test der folgenden Variante nicht ganz so übel face-wink :

Set objShell = CreateObject("Shell.Application")  
Set objFolder = objShell.Namespace(Wscript.arguments(0))

For Each strFileName in objFolder.Items
   
    strName = objFolder.GetDetailsOf(strFileName, 0)
	If InstrRev(strName, ".") > 1 Then strName = Left(strName, InstrRev(strName, ".") - 1)  
	Wscript.echo strName & " " & objFolder.GetDetailsOf(strFileName, 14)  
    
Next

Grüße
bastla
Member: Biber
Biber Jan 15, 2007 at 19:11:11 (UTC)
Goto Top
@bastla

... ich wusste schon, für wen ich den beitrag noch offen gelassen habe face-wink

@Farmer & @Beli23 (evtl jetzt Beli24?):
Falls Ihr noch mitlest: Ist das die Richtung, die ihr im Sinn hattet?
Sprich: können wir hier einen Haken dran setzen demnächst?

Gruß
Biber
Member: bastla
bastla Jan 15, 2007 at 19:19:19 (UTC)
Goto Top
@bastla

... ich wusste schon, für wen ich den beitrag noch offen gelassen habe face-wink
Meine Berechenbarkeit ist eine meiner Stärken ... face-wink

Grüße
bastla
Member: sub273
sub273 Jan 15, 2007 at 19:38:15 (UTC)
Goto Top
Wow, Danke face-smile

Das mit dem Zeit<->Nutzen Verhältnis bezog sich natürlich aufs selber einarbeiten. ;)

Wirklich super, wie einem hier geholfen wird !
Member: ArthurDent42
ArthurDent42 Jul 27, 2009 at 10:42:47 (UTC)
Goto Top
Hallo,

wie würde man denn anstatt den erweiterten Eigenschaften das exakte Erstellungsdatum
auslesen?

Leider habe ich überhaupt keinen Plan von VBS, müsste aber einen Script
mit der gleichen Funktionalität wie oben genannt haben, der mir Dateiname
und Dateierstellungsdatum (objFile.CreationDate) ausgibt.

ggf. könnte mir hier jemand unter die Arme greifen.

> Dim arrHeaders(34)
> Set objShell = CreateObject("Shell.Application")  
> Set objFolder = objShell.Namespace(Wscript.arguments(0))
> 
> arrHeaders(0) = objFolder.GetDetailsOf(objFolder.Items, 0)
> arrHeaders(14) = objFolder.GetDetailsOf(objFolder.Items, 14)
> 
> For Each strFileName in objFolder.Items
>    
>     Wscript.echo objFolder.GetDetailsOf(strFileName, 0) &"  
> "& objFolder.GetDetailsOf(strFileName, 14)  
>     
> Next
> 
Member: bastla
bastla Jul 27, 2009 at 10:51:32 (UTC)
Goto Top
Hallo ArthurDent42 und willkommen im Forum!
wie würde man denn anstatt den erweiterten Eigenschaften das exakte Erstellungsdatum auslesen?
Andere Baustelle: http://msdn.microsoft.com/en-us/library/ke6a7czx(VS.85).aspx

Grüße
bastla
Member: Biber
Biber Jul 27, 2009 at 17:45:34 (UTC)
Goto Top
...und weil es nicht nur eine andere Baustelle ist, sondern auch dieser Beitrag abgeschlossen ist...

...mach ich mal dicht hier.

Beitrag geschlossen.

Grüße
Biber