goodbytes
Goto Top

Vbs - Variable als Parameter an externes Programm übergeben und Rückgabewert in Variable schreiben

Hallo,
ich habe ein vbs-Script, welches alle Dateien eines Verzeichnisse in ein Array schreibt. Mittels eines kleinen Tools kann ich Exif-Daten einer Datei auslesen.
Ich gebe also den interessierenden Wert als Parameter mit und dazu den Dateinamen als String:
exiftool.exe -SuchParameter [Dateiname]
Danach schreib ich den Dateinamen und den ermittelten Exif-String in das Array.

Wie übergebe ich also an das externe Tool und wie schreibe ich den zurückgegebenen String in eine Variable?

Gruß
Torsten

Content-Key: 270600

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

Printed on: April 25, 2024 at 03:04 o'clock

Member: colinardo
Solution colinardo Apr 29, 2015 updated at 10:06:54 (UTC)
Goto Top
Hallo Torsten,
hier ein kleines Beipspiel wie man den StdOut eines Konsolentools auslesen kann:
Dim objShell, oExec, out
Set objShell = CreateObject("Wscript.Shell")  

'Befehl ausführen  
Set oExec = objShell.Exec("cmd /c ping -n 1 localhost")  

'Warte darauf das der Befehl beendet wurde  
Do While oExec.Status = 0
     WScript.Sleep 100
Loop

' StdOut auslesen  
out = ""  
Do While Not oExec.StdOut.AtEndOfStream
   out = out & oExec.StdOut.ReadAll
Loop

' Zum Test: Ausgabe anzeigen lassen:  
msgbox out
Grüße Uwe
Member: goodbytes
goodbytes Apr 29, 2015 at 09:50:19 (UTC)
Goto Top
Hallo Uwe,
das ging ja superschnell und funktioniert perfekt, danke !!! face-smile
Eine Frage noch, Als Rückgabe erhalte ich da mehrere Strings in einer Zeile. Wie kann ich von der Rückgabe nur den String nach dem ersten Doppelpunkt nutzen?

Gruß
Torsten
Member: colinardo
Solution colinardo Apr 29, 2015 updated at 10:05:37 (UTC)
Goto Top
Wenn es in der ersten Zeile der Ausgabe steht und die Ausgabe mehrere Zeilen hat ...
Kommt halt drauf an wie die Zeile aussieht ... Du machst es uns einfacher indem du uns einfach die exakte Ausgabe deines Befehls hier postest face-wink
'..... wie oben  

arrLines = Split(out,vbNewLine)
var = Trim(Split(arrLines(0),":",2,1)(1))  
MsgBox var
Member: goodbytes
goodbytes Apr 29, 2015 at 10:06:36 (UTC)
Goto Top
Perfekt!
Vielen Dank und einen schönen Tag noch! face-smile

Gruß
Torsten