2009-02-03 3 views
46

Dies ist eine Stapeldatei in Windows.Befehlsfenster der .BAT-Datei ausblenden, das eine andere .EXE-Datei ausführt

Hier ist meine .bat Datei

@echo off 
copy "C:\Remoting.config-Training" "C:\Remoting.config" 

"C:\ThirdParty.exe" 

Dies funktioniert gut, mit Ausnahme der .bat-Datei die Befehlsfenster verlässt die ganze Zeit öffnen Sie die „Drittanbieter“ Anwendung ausgeführt wird.
Ich brauche das Befehlsfenster zu schließen.

Ich würde die Abkürzung für die Anwendung verwenden, aber ich muss in der Lage sein, diesen Kopierbefehl zuerst auszuführen (es ändert sich tatsächlich, welche Datenbank und Server für die Anwendung zu verwenden).

Die ThirdParty-Anwendung ermöglicht dem Benutzer nicht, die Quelle der Datenbank oder des Anwendungsservers zu ändern.

Wir machen das, damit Benutzer von einer Testumgebung in die Produktionsumgebung wechseln können.

Antwort

38

Mit start funktioniert bei mir:

@echo off 
copy "C:\Remoting.config-Training" "C:\Remoting.config" 
start C:\ThirdParty.exe 

EDIT: Ok, genauerem Hinsehen scheint start den ersten Parameter als neuer Fenstertitel zu interpretieren, wenn zitiert. Wenn Sie also den Pfad zu ThirdParty.exe angeben müssen, müssen Sie auch eine Title-Zeichenfolge angeben.

Beispiele:

:: Title not needed: 
start C:\ThirdParty.exe 

:: Title needed 
start "Third Party App" "C:\Program Files\Vendor\ThirdParty.exe" 
+0

Jetzt startet die Third Party App nicht und mein Befehlsfenster bleibt geöffnet. – JeffO

+0

Ja, du hast Recht. Als ich das verwendete, habe ich den Pfad zu meiner Bewerbung nicht angegeben. Bitte werfen Sie einen Blick auf meine überarbeitete Antwort. –

+0

Danke an Patrick Cuff für die Verbesserung meiner Antwort. Ich bin immer noch neu in SO und wusste bis jetzt nicht, dass genug Reputation es erlauben würde, die Posts anderer Leute zu bearbeiten ... –

3

Ich habe nicht wirklich einen guten Weg gefunden, das nativ zu tun, also benutze ich einfach ein Dienstprogramm namens hstart, das es für mich tut. Wenn es einen besseren Weg gibt, das zu tun, wäre das nett.

+0

HSTART ist ein hervorragendes Dienstprogramm für den Ersatz der CMD Fenster, plus es ist mit PowerShell und Ruby – SteveC

10

Try this:

@echo off 
copy "C:\Remoting.config-Training" "C:\Remoting.config" 
start C:\ThirdParty.exe 
exit 
+0

arbeiten Verwenden Sie nicht die Anführungszeichen um C: \ ThirdParty.exe und das wird perfekt funktionieren. –

+0

Cool, danke Patrick. – QAZ

+0

Das hat auch für mich perfekt funktioniert, danke. – sclarson

1

Bitte diese benutzen, wird die oben nicht funktionieren. Ich habe in Window Server 2003.

+2

Welchen Fehler haben Sie bekommen, der anzeigt, dass "oben" nicht funktioniert? Vielleicht liegt es daran, dass Sie Windows Server verwenden? – JeffO

6

Mit start funktioniert gut getestet, es sei denn Sie eine Skriptsprache verwenden. Glücklicherweise ein Ausweg für Python gibt es - nur pythonw.exe anstelle von python.exe:

:: Title not needed: 
start pythonw.exe application.py 

Falls Sie Anführungszeichen benötigen, dies tun:

:: Title needed 
start "Great Python App" pythonw.exe "C:\Program Files\Vendor\App\application.py" 
1

läuft unter einem anderen Benutzer. Wenn dies eine Windows-Box ist, erstellen Sie ein Benutzerkonto für geplante Aufgaben. führe es als diesen Benutzer aus. Die Eingabeaufforderung wird nur für den derzeit angemeldeten Benutzer angezeigt.

6

Toller Tipp. Es funktioniert mit Batch-Dateien, die auch ein Java-Programm ausführen.

start javaw -classpath "%CP%" main.Main 
+0

Das funktionierte hervorragend für mich, aber alles, was ich zu tun hatte, war "javaw mainClass" in meine '.bat' Datei zu speichern und es war großartig! – rfoo

2

Kompilieren Sie die Batchdatei zu einer ausführbaren Datei Batch2Exe http://www.f2ko.de/programs.php?lang=en&pid=b2e. Verwenden Sie die Option "Unsichtbares Fenster".

+2

Es gab nicht genug Informationen über diese App, damit ich mich bei dem Versuch wohl fühle. FAQ. Demo, etwas mehr als ein Screenshot eines Tabs. – JeffO

+0

Softpedia scheint eine gute Meinung dazu zu haben: Bat To Exe Converter 1.6.0 - SOFTPEDIA "100% CLEAN" AWARD. Hier ist ein alternativer Downloadlink: http://www.softpedia.com/get/System/File-Management/Batch-To-Exe-Converter.shtml –

+0

Ich habe es benutzt. Es funktionierte auf meinem einen Computer, aber ich habe die EXE-Dateien zu einem anderen verschoben und sie arbeiten nicht daran. –

2

Sie könnten mein silentbatch Programm interessiert sein, bei dem Versuch, die ein .bat/.cmd Skript ausgeführt wird, Erstellung des Command ganz Aufforderungsfenster unterdrücken (so werden Sie sehen, es nicht angezeigt, und dann verschwinden) und gegebenenfalls den Ausgang log zu einer bestimmten Datei.

2

Sie können ein VBS-Skript erstellen, das das Verbergen des Fensters erzwingt.

================... Set WshShell = WScript.CreateObject("WScript.Shell") obj = WshShell.Run("""C:\Program Files (x86)\McKesson\HRS Distributed\SwE.bat""", 0) set WshShell = Nothing '=====================================...

Dann, anstatt die Batch-Datei ausgeführt wird, führen Sie das Skript.

9

erstellen .vbs Datei mit diesem Code:.

Create ("Wscript.Shell") Run "your_batch.bat", 0,

Wahr Dieser .vbs versteckt your_batch.bat laufen wird.

Funktioniert gut für mich.

+0

Danke, das ist die richtige Antwort – dns

+0

Das ist wirklich die Antwort. –

+0

Das hat für mich funktioniert – user5155835

1

Um das Befehlsfenster einer .bat-Datei, die eine EXE-Datei ausführt, so schnell wie möglich zu beenden, verwenden Sie die Zeile @start vor der Datei, die Sie ausführen möchten. Hier ein Beispiel:

(insert other code here) @start executable.exe (insert other code here)

Sie müssen einen anderen Code nicht mit @start executable.exe verwenden.

1

Oder Sie benutzen.

Start /d "the directory of the executable" /b "the name of the executable" "parameters of the executable" %1 (% 1 ist, wenn eine Datei, auf die ausführbare Datei übergeben wird, beispielsweise notepad.exe foo.txt, hier% 1 "foo.txt"

Die/b Parameter des Startbefehls tut dies: "Startet eine Anwendung ohne ein neues Eingabeaufforderungsfenster zu öffnen. CTRL + C-Behandlung wird ignoriert, es sei " Was genau wir wollen.

Verwandte Themen