Wie kann ich eine CMD- oder .bat-Datei im unbeaufsichtigten Modus ausführen? Ich suche, um zu verhindern, dass die CMD-Schnittstelle dem Benutzer angezeigt wird.
Ich habe in StackOverflow eine Möglichkeit vorgeschlagen, eine Batchdatei im Hintergrund auszuführen (keine angezeigten DOS-Fenster)
Das sollte deine Frage beantworten.
Hier ist es:
Rufen Sie in Ihrem ersten Skript Ihr zweites Skript mit der folgenden Zeile auf:
wscript.exe invis.vbs run.bat %*
Tatsächlich rufen Sie ein VBS-Skript auf mit:
%*
)Anschließend ruft invis.vbs Ihr Skript mit der Windows Script Host-Methode Run () auf, die Folgendes erfordert:
Siehe die Frage zum vollständigen invis.vbs-Skript:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
^
means "invisible window" ---|
Update nach Tammens Feedback:
Wenn Sie sich in einer DOS-Sitzung befinden und ein anderes Skript "im Hintergrund" starten möchten, reicht ein einfacher /b
(wie in der gleichen Frage ausführlich beschrieben) aus:
Sie können
start /b second.bat
verwenden, um eine zweite Stapeldatei asynchron von Ihrer ersten zu starten, die das Fenster Ihrer ersten freigibt.
Fügen Sie den Satz hinzu
@echo off
ganz oben in Ihrem Fledermaus-Skript.
Verwenden Sie Advanced BAT to EXE Converter von http://www.battoexeconverter.com
Auf diese Weise können Sie zusätzliche Binärdateien mit Ihrer Batch-Datei in eine vollständig stille EXE-Datei und deren Freeware einbetten
Verwenden Sie dazu den Bat To Exe Converter
http://download.cnet.com/Bat-To-Exe-Converter/3000-2069_4-10555897.html
(Wählen Direkter Download-Link)
1 - Öffnen Sie Bat to Exe Converter und wählen Sie Ihre Bat-Datei aus.
2 - Wählen Sie im Optionsmenü "Invisible Application" (Unsichtbare Anwendung) und drücken Sie die Compile-Taste.
Erledigt!
Ich denke, dies ist die einfachste und kürzeste Lösung, um eine Batchdatei auszuführen, ohne das DOS-Fenster zu öffnen. Dies kann sehr ablenkend sein, wenn Sie eine Reihe von Befehlen planen, die regelmäßig ausgeführt werden sollen . Rufen Sie die Batchdatei mit einem VBS-Skript auf ...
Set WshShell = CreateObject("WScript.Shell" )
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0
Set WshShell = Nothing
Kopieren Sie die obigen Zeilen in einen Editor und speichern Sie die Datei mit der Erweiterung .VBS. Bearbeiten Sie den Namen und den Pfad der .BAT-Datei entsprechend.
Versuchen Sie es mit SilentCMD. Dies ist ein kleines Freeware-Programm, das eine Batch-Datei ausführt, ohne das Eingabeaufforderungsfenster anzuzeigen.
Wenn ich den Befehl promt im stillen Modus ausführen möchte, gibt es einen einfachen vbs-Befehl:
Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"
wenn ich eine URL in cmd stillschweigend öffnen wollte , dann ist hier ein Code:
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("iexplore.exe http://otaxi.ge/log/index.php", 0)
'wait 10 seconds
WScript.sleep 10000
Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"
Ich bin mir ziemlich sicher, dass ich diese Methode am besten mag. Kopieren Sie den folgenden Code und fügen Sie ihn in eine VBS-Datei ein. Von dort rufen Sie die Batch-Datei auf. Stellen Sie daher sicher, dass Sie die letzte Zeile bearbeiten, um Pfad und Namen der Batch-Datei anzugeben (die die Datei enthalten soll, die Sie starten möchten, oder die erforderlichen Aktionen ausführen).
Const HIDDEN_WINDOW = 12
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
errReturn = objProcess.Create("C:\PathOfFile\name.bat", null, objConfig, intProcessID)
Es hat definitiv für mich funktioniert. Kommentare werden begrüßt :)
Ich bin RunApp geschaffen, um einen solchen Job zu erledigen und auch in meiner Produktionsumgebung zu verwenden.
Die Konfiguration wie folgt:
file: config.arg
:style:hidden
MyBatchFile.bat
arg1
arg2
Und stattdessen runapp.exe
starten.