AutoIt:Batchdatei beim Ausführen verstecken
Aus znilwiki
Download: HideBatchWindow.exe
Siehe auch: HideBatchWindow.exe - Batch Dateien (.cmd / .bat) ohne sichtbares DOS-Fenster ausführen
Diese Tool startet eine Batch-Datei ohne das sich dabei ein DOS-Fenster öffnet.
und das ist der Quellcode hierzu (mit hoffentlich ausreichend Kommentaren): (HideBatchWindow.au3)
#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 <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)
_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
Loading comments...