====== Externes Programm aufrufen ====== ===== Externes Programm aufrufen ===== //VBScript:// Dim oWSHShell Dim Aufruf Aufruf = """C:\Program Files\irgendeine.exe""" ' Auf Leerzeichen achten, oftmals Maskierung sinnvoll Set oWSHShell = CreateObject("WScript.Shell") oWSHShell.Run Aufruf Um einen Pfad nachträglich zu maskieren, benötigt man reichlich Anführungszeichen:\\ Pfad = """" & Pfad & """" 'oder wenn sowieso die Zeichenkette zusammengesetzt werden muss Pfad = Chr(34) & Pfad & Chr(34) //JScript:// function openProg(progname) { // progname = Pfad zum Programm (String) var oWSHShell = new ActiveXObject("WScript.Shell"); oWSHShell.Run(progname, 10, true); } ===== DOS Befehle ausführen ===== Manchmal ist es sinnvoll, einen DOS-Befehl aus einer Skriptdatei heraus auszuführen. Dabei muss der Pfad zum Kommandozeileninterpreter (//command.com// oder //cmd.exe//) expliziet angegeben werden, was über die Umgebungsvariable //COMSPEC// geschehen kann.\\ Nachfolgendes Beispiel zeigt den Inhalt von C:\ an:\\ Set ws = CreateObject("WScript.Shell") ws.Run "%COMSPEC% /K DIR C:\",1 \\ %COMSPEC% ist je nach Betriebssystem die Umgebungsvariable für //command.com// oder //cmd.exe//\\ %COMSPEC% /K bedeutet: Eingabeaufforderung bleibt geöffnet\\ %COMSPEC% /C bedeutet: Schließen der Eingabeaufforderung nach Ausführung des Befehls\\ \\ Grundsätzlich poppt eine Eingabeaufforderung auf. Diese kann jedoch unterdrückt werden. Das nachfolgende Beispiel läuft unsichtbar ab und löscht eine Datei:\\ Set ws = CreateObject("WScript.Shell") ws.Run "%COMSPEC% /C DEL C:\test.txt",0 ===== Rückgabewert verarbeiten ===== Ruft man per Skript ein externe Kommandozeilentool auf und möchte die __Rückgabewert__ dieses Tools im Skript __weiterberarbeiten__, so scheitert einen Umleitung der Programmausgaben mittels ">" bzw. ">>" in eine Datei. Es tritt dann ein Fehler auf. Es gelingt aber mit dem [[/WScript%20in%20FixFoto|Windows Scripting Host]]-Befehl //WshShell.Exec//\\ \\ //VBScript:// 'Bsp.: Ausgabe des DIR-Befehls Aufruf = "%COMSPEC% /C DIR C:\" Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec(Aufruf) Ausgabe = oExec.StdOut.readall MsgBox Ausgabe Das führt aber zu dem unschönen Effekt, dass sich kurz ein DOS-Fenster öffnet. Um das zu umgehen kann der Aufruf mit Hilfe der Funktion ExecHidden realisiert werden: //VBScript:// 'Bsp.: Ausgabe des DIR-Befehls Aufruf = "%COMSPEC% /C DIR C:\" Ausgabe = ExecHidden (Aufruf) MsgBox Ausgabe Function ExecHidden (CMD) ' v3.A - Quelle: http://dieseyer.de/dse-wsh-scr-b.html Dim FileOut, oWsh, Tmp CMD = Replace( CMD, """", """""" ) Tmp = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%Temp%") & "\" & "ExecHidden.VBS" Set FileOut = CreateObject("Scripting.FileSystemObject").OpenTextFile( Tmp , 2, true) FileOut.WriteLine( " Set oExec = WScript.CreateObject(""WScript.Shell"").Exec(""" & CMD & """) " ) FileOut.WriteLine( " WScript.CreateObject(""WScript.Shell"").Environment( ""volatile"" )( ""Eregbnis"" ) = oExec.StdOut.ReadAll() " ) FileOut.Close Set FileOuT = nothing Set oWsh = CreateObject("WScript.Shell") oWsh.Run "CScript.exe //NOLOGO " & Tmp , 0, true ExecHidden = oWsh.Environment("volatile")( "Eregbnis" ) 'zum Löschen der 'Tmp-Datei nächste Zeile frei geben CreateObject("Scripting.FileSystemObject").DeleteFile( Tmp ) End Function ===== URL aufrufen ===== In gleicher Weise können auch Webseiten aufgerufen werden //VBScript:// Dim oWSHShell Set oWSHShell = CreateObject("WScript.Shell") oWSHShell.Run "http://www.fixfoto.info/" //JScript:// function openLink(url) { // url = Link zur Website (String) var oWSHShell = new ActiveXObject("WScript.Shell"); oWSHShell.Run(url,0,false); }