118 lines
4.5 KiB
AutoIt
118 lines
4.5 KiB
AutoIt
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
|
|
#AutoIt3Wrapper_icon=..\znil.ico
|
|
#AutoIt3Wrapper_Res_Description=Batch versteckt starten
|
|
#AutoIt3Wrapper_Res_Fileversion=1.0.0.16
|
|
#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 <WinAPI.au3>
|
|
; 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)
|
|
_Console_ChangeTextColor($ZeigerConsole,133)
|
|
_WinAPI_WriteConsole($ZeigerConsole,$HilfeText)
|
|
Send("{Enter}")
|
|
EndFunc
|
|
|
|
;#################################################################################################
|
|
Func _Console_SetTitle($sTitle)
|
|
; ProgAndy
|
|
Local $aRes = DllCall("kernel32.dll", "bool", "SetConsoleTitleW", "wstr", $sTitle)
|
|
If @error Then Return SetError(1,0,0)
|
|
Return $aRes[0]
|
|
EndFunc
|
|
;###################################################################################################
|
|
|
|
Func _Console_ChangeTextColor ($zConsole, $Color)
|
|
; BLinz
|
|
Local $aRes = DllCall("kernel32.dll", "bool", "SetConsoleTextAttribute","handle", $zConsole, "word", $Color)
|
|
If @error Then Return SetError(1,0,0)
|
|
Return $aRes[0]
|
|
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 |