Wie schließe ich das cmd-Fenster nach der Ausführung der Batchdatei automatisch?


87

Ich führe eine Batchdatei aus, die diese beiden Zeilen enthält:

start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Diese Batch-Datei wird verwendet, um die Xming-Anwendung und dann die PuTTY-App auszuführen, damit ich SSH in das Computerlabor meiner Universität einbinden kann.

Wenn ich dies jedoch ausführe und Xming noch nicht geöffnet ist, bleibt das cmd-Fenster geöffnet, sobald ich das PuTTY-Terminal verlasse. Nur wenn ich Xming bereits ausgeführt habe, wird das cmd-Fenster geschlossen, wenn ich das PuTTY-Terminal schließe. Ich habe versucht, exitin die letzte Zeile der Batch-Datei einzufügen, aber ohne Erfolg.


1
ist "C:\Program Files (x86)\Xming\Xming.exe"ein Parameter aus putty.exe oder ein separater Befehl?
bpoiss

Wenn es sich bei der zweiten Zeile um einen zweiten Befehl handelt, fügen Sie auch vorher start hinzu.
Grau

1
@BernhardPoiss ist ein separater Befehl, KEIN Parameter für putty.exe. Wenn ich diese Linie an die erste Stelle setze, hängt sie und öffnet den Kitt. Wenn ich vor ihm setzen beginnen, sagt Fenster „nicht finden können , ‚C: \ Program‘.. Bitte stellen Sie sicher , es ist Typ richtig
yiwei

Antworten:


134

Ändern Sie die Batch-Datei in STARTbeide Programme, anstatt STARTeines und eines CALLanderen

start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"
start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Wenn Sie es so ausführen, bleibt nach dem Starten des Programms kein CMD-Fenster geöffnet.


28
+1, außer wenn Sie doppelte Anführungszeichen für den Pfad verwenden, müssen Sie einen ersten Parameter hinzufügen, ""wenn der Titel erforderlich wird. Der zweite Befehl sollte start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindowansonsten sein, es wird versucht, ein Befehlsfenster mit dem Titel " C:\Program Files (x86)\Xming\Xming.exeVersuch, :0mit Parametern auszuführen" zu öffnen-clipboard -multiwindow
Patrick Meinecke

Auch dieses start /B "GCFScape" "x64\GCFScape.exe">nulBeispiel war hilfreich für mich
Xacinay

4
"Wenn der Befehl ein interner cmd-Befehl oder eine Batchdatei ist, wird der Befehlsprozessor mit dem Schalter / K auf cmd.exe ausgeführt. Dies bedeutet, dass das Fenster nach dem Ausführen des Befehls erhalten bleibt." ss64.com/nt/start.html
CAD-

3
@CADbloke Ihr erwähntes Problem kann mitcmd.exe /C "start cmd.exe /C [...].bat ..."
Thorsten Schöning

1
@ patrick-meinecke Danke, dass du den Kommentar zu "" hinzugefügt hast. Ich war frustriert, dass dies mir Probleme bereitete. Ich habe Ihren Kommentar gelesen und ein ah ha Moment folgte.
Michael Eakins

20

Normalerweise beenden Sie eine Batchdatei mit einer Zeile, in der nur steht exit. Wenn Sie sicherstellen möchten, dass die Datei ausgeführt wurde und das DOS-Fenster nach 2 Sekunden geschlossen wird, können Sie die folgenden Zeilen hinzufügen:

timeout 2 >nul
exit

Der exitBefehl funktioniert jedoch nicht, wenn Ihre Batchdatei ein anderes Fenster öffnet, da bei jedem Öffnen des zweiten Fensters auch das alte DOS-Fenster angezeigt wird.

LÖSUNG: Zum Beispiel gibt es ein tolles kleines kostenloses Programm namens BgInfo, das alle Informationen über Ihren Computer anzeigt. Angenommen, es befindet sich in einem Verzeichnis namens C:\BgInfo, um es aus einer Batchdatei mit dem /popupSchalter auszuführen und das DOS-Fenster zu schließen, während es noch ausgeführt wird, verwenden Sie:

start "" "C:\BgInfo\BgInfo.exe" /popup
exit

mit /popupeinem Fehler gibt mir eigentlich war. Nach dem Entfernen hat alles funktioniert
Dmitry Efimenko

4

Wenn Sie die Befehle in einen Befehl pro Datei aufteilen möchten, können Sie dies tun

cmd /c start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"

und in der anderen Datei können Sie tun

cmd /c start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

Der Befehl cmd / c schließt das Eingabeaufforderungsfenster, nachdem die exe ausgeführt wurde.


3

Das hat bei mir funktioniert. Ich wollte nur das Befehlsfenster nach dem Beenden des Spiels automatisch schließen. Ich doppelklicke einfach auf die .bat-Datei auf meinem Desktop. Keine Abkürzungen.

taskkill /f /IM explorer.exe
C:\"GOG Games"\Starcraft\Starcraft.exe
start explorer.exe
exit /B

1

Ich hatte dies, fügte ich hinzu, EXITund anfangs funktionierte es nicht. Ich schätze, dass ich den called program exitingin einer anderen Antwort hier erwähnten Rat benötige. Jetzt funktioniert es jedoch ohne weiteres - ich bin mir nicht sicher, was dies verursacht hat, aber der Punkt, den ich beachten muss, ist, dass ich es bin eine Datendatei aufrufen , .htmlanstatt das Programm , dass Griffe es browser.exe, ich nicht bearbeiten etwas anderes tat , aber es genügt zu sagen , dass es die Hauptzugangs Seiten dieser Web - Dokumente und nur mit mit nur einer bat - Datei für den Zugriff viel ordentlicher ist title.bat, contents.bat, index.batim Stammordner mit dem Rest des Inhalts in einem Unterordner.

dh: content.bat liest

cd subfolder
"contents.html"
exit

Es sieht auch besser aus, wenn ich die Bat-Dateisymbole nur für die Elemente an den Kontext anpasse, in dem sie sich befinden. Aber das ist eine andere Sache, indem ich die Bat-Dateien im Unterordner verstecke und benutzerdefinierte Symbolverknüpfungen zu ihnen im Stammordner mit den Bildern erstelle forderte die Anpassung auch versteckt.


0

Sie könnten das etwas gefährliche taskkill /IM cmd.exeausprobieren : ..dangerous bcz, das das geöffnete cmd und alle zuvor geöffneten cmd tötet.

Oder fügen Sie eine Bestätigung hinzu, um zu bestätigen, dass Sie die richtige cmd.exe hatten, und beenden Sie sie dann über PID, wie folgt:

set loc=%time%%random%
title=%loc%
for /f "tokens=2 delims= " %%A in ('tasklist /v ^| findstr /i "%loc%"') do (taskkill /PID %%A) 

Ersatz (pslist &&A)oder (tasklist /FI "PID eq %%A")für die , (taskkill /PID %%A)wenn Sie es wollen , zuerst überprüfen (und vielleicht haben pstools installiert ist ).


0

Versuchen Sie es einfach /swie unten aufgeführt.

Als letzte Zeile im Batch-Dateityp:

exit /s

Der obige Befehl schließt das Windows CMD-Fenster.

/s - steht für leise wie in (es würde auf eine Eingabe von der Tastatur warten).


1
cmd's Exit- Befehl hat keinen /sSchalter (und es wäre sowieso sinnlos)
Stephan

-1

Fügen Sie diesen Code am Ende des Ausführungscodes hinzu

c: \ windows> exit


1
Hast du den letzten Satz der Frage gelesen?:I've tried adding exit to the last line of the batch file, but to no avail.
Stephan

Ich habe am Ende meines Skripts exit hinzugefügt und es hat mein Problem tatsächlich gelöst.
Attila
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.