Jak automatycznie zamknąć okno cmd po wykonaniu pliku wsadowego?

88

Uruchamiam plik wsadowy zawierający te dwie linie:

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

Ten plik wsadowy służy do uruchamiania aplikacji Xming, a następnie aplikacji PuTTY, dzięki czemu mogę połączyć się przez SSH z laboratorium komputerowym mojej uczelni.

Jeśli jednak uruchomię to, a Xming nie jest już otwarty, po wyjściu z terminala PuTTY okno cmd pozostanie otwarte. Tylko jeśli już uruchomiłem Xming, okno cmd zamyka się, gdy zamykam terminal PuTTY. Próbowałem dodać exitdo ostatniego wiersza pliku wsadowego, ale bezskutecznie.

yiwei
źródło
1
jest "C:\Program Files (x86)\Xming\Xming.exe"parametrem z putty.exe czy osobnym poleceniem?
bpoiss
Jeśli druga linia jest drugą komendą, spróbuj dodać początek również przed nią.
Gray
1
@BernhardPoiss to osobna komenda, a nie parametr dla putty.exe. Jeśli umieszczę tę linię jako pierwszą, zawiesza się i otwiera kit. Jeśli umieszczę przed nim początek, w
systemie Windows pojawi się komunikat

Odpowiedzi:

134

Zmodyfikuj plik wsadowy w STARTobu programach, zamiast STARTjednego i CALLdrugiego

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

Jeśli uruchomisz go w ten sposób, żadne okno CMD nie pozostanie otwarte po uruchomieniu programu.

Ahmad
źródło
28
+1, z wyjątkiem sytuacji, gdy używasz podwójnych cudzysłowów jako ścieżki, musisz dodać pierwszy parametr, ""gdy tytuł będzie wymagany. Drugie polecenie powinno być start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindowinaczej, spróbuje otworzyć okno poleceń zatytułowane C:\Program Files (x86)\Xming\Xming.exepróba wykonania :0z parametrami-clipboard -multiwindow
Patrick Meinecke,
Również ten start /B "GCFScape" "x64\GCFScape.exe">nulprzykład był dla mnie
pomocny
4
„Jeśli polecenie jest wewnętrznym poleceniem cmd lub plikiem wsadowym, procesor poleceń jest uruchamiany z przełącznikiem / K na cmd.exe. Oznacza to, że okno pozostanie po uruchomieniu polecenia”. ss64.com/nt/start.html
CAD bloke
3
@CADbloke Wspomniany problem można rozwiązać za pomocącmd.exe /C "start cmd.exe /C [...].bat ..."
Thorsten Schöning
1
@ patrick-meinecke Dziękujemy za dodanie komentarza na temat „”. Byłem sfrustrowany, że powoduje to problemy. Przeczytałem twój komentarz i nastąpił moment ah ha.
Michael Eakins,
21

Zwykle kończysz plik wsadowy wierszem z napisem exit. Jeśli chcesz się upewnić, że plik został uruchomiony, a okno DOS zamyka się po 2 sekundach, możesz dodać linie:

timeout 2 >nul
exit

Ale exitpolecenie nie zadziała, jeśli plik wsadowy otworzy inne okno, ponieważ podczas gdy drugie okno jest otwarte, zostanie również wyświetlone stare okno DOS.

ROZWIĄZANIE: Na przykład istnieje świetny mały darmowy program o nazwie BgInfo, który wyświetla wszystkie informacje o twoim komputerze. Zakładając, że znajduje się w katalogu o nazwie C:\BgInfo, aby uruchomić go z pliku wsadowego za pomocą /popupprzełącznika i zamknąć okno DOS, gdy nadal działa, użyj:

start "" "C:\BgInfo\BgInfo.exe" /popup
exit
Adrian747
źródło
to /popupfaktycznie dawało mi błąd. Po usunięciu wszystko zadziałało
Dmitry Efimenko
4

Jeśli chcesz podzielić polecenia na jedno polecenie na plik, możesz to zrobić

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

aw drugim pliku możesz to zrobić

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

Polecenie cmd / c zamknie okno wiersza polecenia po uruchomieniu exe.

Jenna Leaf
źródło
3

To zadziałało dla mnie. Chciałem tylko zamknąć okno poleceń automatycznie po wyjściu z gry. Po prostu dwukrotnie klikam plik .bat na moim pulpicie. Żadnych skrótów.

taskkill /f /IM explorer.exe
C:\"GOG Games"\Starcraft\Starcraft.exe
start explorer.exe
exit /B
sklecony
źródło
1

Miałem to, dodałem EXITi początkowo nie działało, chyba wymagając called program exitingporady wspomnianej w innej odpowiedzi tutaj, jednak teraz działa bez zbędnych ceregieli - nie jestem pewien, co to spowodowało, ale warto zauważyć, że jestem nazywając plik danych .htmlzamiast programu, który poradzi sobie browser.exe, że nie zmieniłeś cokolwiek innego, ale wystarczy powiedzieć, że to dużo neater tylko przy użyciu pliku bat, aby uzyskać dostęp do głównych stron dostępu do tych dokumentów internetowych i tylko konieczności title.bat, contents.bat, index.batw folderze głównym z resztą treści w podfolderze.

czyli: content.bat czyta

cd subfolder
"contents.html"
exit

Wygląda również lepiej, jeśli zmienię ikony plików bat tylko dla tych elementów, aby dopasować je do kontekstu, w którym się znajdują, ale to już inna sprawa, ukrywanie plików bat w podfolderze i tworzenie niestandardowych skrótów do nich w folderze głównym z obrazami wezwał do dostosowania również ukryty.

xtian170174
źródło
0

Możesz spróbować nieco niebezpiecznego: taskkill /IM cmd.exe..dangerous bcz, który zabije cmd, które jest otwarte, i wszystkie cmd otwarte przed nim.

Lub dodaj weryfikację, aby potwierdzić, że masz właściwy cmd.exe, a następnie zabij go za pomocą PID, na przykład:

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

Zastępca (pslist &&A)lub (tasklist /FI "PID eq %%A")dla (taskkill /PID %%A)jeśli chcesz sprawdzić to pierwszy (i być może zainstalowano pstools).

melasa
źródło
0

Po prostu spróbuj, /sjak podano poniżej.

Jako ostatnia linia w typie pliku wsadowego:

exit /s

Powyższe polecenie zamknie okno CMD systemu Windows.

/s - oznacza cichy jak w (czekałby na wejście z klawiatury).

Salmaan
źródło
1
cmd„s wyjście polecenia nie posiada /sprzełącznika (i byłoby bezcelowe)
Stephan
-1

Dodaj ten kod na końcu kodu wykonania

c: \ windows> zakończ

Shyam99
źródło
1
czy przeczytałeś ostatnie zdanie pytania ?:I've tried adding exit to the last line of the batch file, but to no avail.
Stephan
Dodałem wyjście na końcu mojego skryptu i faktycznie rozwiązało to mój problem.
Attila