#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_icon=..\znil.ico #AutoIt3Wrapper_Res_Description=Batch versteckt starten #AutoIt3Wrapper_Res_Fileversion=1.0.0.14 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y #AutoIt3Wrapper_Res_LegalCopyright=2011 von Bernhard Linz - http://znil.net #AutoIt3Wrapper_Res_Language=1031 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** ;HideBatchWindow.exe ; ;Programm zum versteckten ausführen von Batchdateien ; ;Aufruf: hidebatchwindow.exe [/wait] [Laufwerk:][Pfad][Batchdatei] ; ;2011 Bernhard Linz ;Email: Bernhard.Linz@datagroup.de ;Email: Bernhard@znil.net ; ;beim Compilen darf "Create CUI instead of GUI" NICHT (NICHT!) gestezt werden - sonst gibt es doch ein sichtbares Fenster! ; #Include ; 10 20 30 40 50 60 70 80 ; 12345678901234567890123456789012345678901234567890123456789012345678901234567890 Dim $Header = @CRLF & _ @CRLF & _ "HideBatchWindow.exe - 2011 von Bernhard Linz für http://znil.net" & @CRLF & _ "Kontakt: Bernhard@znil.net" & @CRLF & _ @CRLF ; 10 20 30 40 50 60 70 80 ; 12345678901234567890123456789012345678901234567890123456789012345678901234567890 Dim $HilfeText = "Startet eine Batchdatei versteckt, also ohne ein DOS-Fenster zu zeigen." & @crlf & _ @CRLF & _ "Aufruf:" & @CRLF & _ @ScriptName & " [/wait] [Laufwerk:][Pfad][Batchdatei] [Parameter]" & @CRLF & _ @CRLF & _ "/wait : Auf das Beenden der Batchdatei warten" & @CRLF & _ " (sonst selbst beenden)" & @CRLF & _ "[Laufwerk:][Pfad][Batchdatei] : Pfad zur Batchdatei" & @CRLF & _ "[Parameter] : eventuelle Parameter für die Batchdatei" & @CRLF & _ " (die diese Verarbeitet)" & @CRLF & _ @CRLF & _ "zum Beispiel: " & @ScriptName & " test.cmd" & @CRLF & _ " " & @ScriptName & " C:\Scripte\test.cmd" & @CRLF & _ " " & @ScriptName & " \\server\freigabe\test.cmd" & @CRLF & _ " " & @ScriptName & " /wait \\server\freigabe\test.cmd" & @CRLF & _ " " & @ScriptName & " \\server\freigabe\test.cmd par1 par2" & @CRLF & _ @CRLF & _ "Bei Leerzeichen im Pfad bitte in Anführungszeichen setzen!" & @CRLF & _ @CRLF Dim $Befehlzeile Dim $ZeigerConsole Func _HilfeAusgeben() _WinAPI_AttachConsole() $ZeigerConsole = _WinAPI_GetStdHandle(1) _WinAPI_WriteConsole($ZeigerConsole,$Header) _WinAPI_WriteConsole($ZeigerConsole,$HilfeText) Send("{Enter}") EndFunc ;testen ob wir überhaupt mit einem parameter gestartet wurden - sonst Hilfe ausgeben If $CmdLine[0] = 0 Then _HilfeAusgeben() Exit EndIf ;testen ob der Parameter 1 ist auf "/?" testen und ebenfalls Hilfe ausgeben If $CmdLine[1] = "/?" Then _HilfeAusgeben() Exit EndIf ;testen ob nur 1 Parameter gesetzte wurde und ein Schlauberger hier nur /wait angebene hat - dann Hilfe ausgeben If StringCompare($CmdLine[1], "/wait", 0) = 0 And $CmdLine[0] = 1 Then _HilfeAusgeben() Exit EndIf ;testen ob der /wait Parameter gesetzt wurde oder nicht und ;testen ob es die übergebene Datei überhaupt gibt: If StringCompare($CmdLine[1], "/wait", 0) = 0 Then If FileExists($CmdLine[2]) Then $Befehlzeile = "" For $i = 2 To $CmdLine[0] $Befehlzeile = $Befehlzeile & $CmdLine[$i] & " " Next RunWait(@ComSpec & " /c " & $Befehlzeile, "", @SW_HIDE) EndIf Else If FileExists($CmdLine[1]) Then $Befehlzeile = "" For $i = 1 To $CmdLine[0] $Befehlzeile = $Befehlzeile & $CmdLine[$i] & " " Next Run(@ComSpec & " /c " & $Befehlzeile, "", @SW_HIDE) EndIf EndIf