webentwicklung-frage-antwort-db.com.de

Ausführen eines CMD oder BAT im unbeaufsichtigten Modus

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.

39

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:

  • der [Pfad]\Name Ihres Skripts
  • alle anderen Argumente, die von Ihrem Skript benötigt werden (%*)

Anschließend ruft invis.vbs Ihr Skript mit der Windows Script Host-Methode Run () auf, die Folgendes erfordert:

  • intWindowStyle: 0 bedeutet "unsichtbare Fenster"
  • bWaitOnReturn: false bedeutet, dass Ihr erstes Skript nicht warten muss, bis das zweite Skript abgeschlossen ist

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.

36
VonC

Fügen Sie den Satz hinzu

@echo off

ganz oben in Ihrem Fledermaus-Skript.

38

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

8
xfgjhxdfg

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!

6
rafael

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.

6
indago

Versuchen Sie es mit SilentCMD. Dies ist ein kleines Freeware-Programm, das eine Batch-Datei ausführt, ohne das Eingabeaufforderungsfenster anzuzeigen.

5
Stephan Brenner

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"
3
saele

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 :)

2
nino

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.

0
James Yang