Jakie polecenie mogę umieścić na końcu pliku wsadowego, aby zapobiec automatycznemu zamknięciu konsoli po wykonaniu pliku?
Jakie polecenie mogę umieścić na końcu pliku wsadowego, aby zapobiec automatycznemu zamknięciu konsoli po wykonaniu pliku?
Odpowiedzi:
W plikach wsadowych Windows / DOS:
pause
To ładna "Press any key to continue . . . "
wiadomość
Lub, jeśli nie chcesz "Press any key to continue . . ."
wiadomości, zrób to zamiast tego:
pause >nul
Zależy od dokładnego pytania!
Zwykle pause
wykonuje to zadanie w pliku .bat .
Jeśli chcesz, aby cmd.exe nie zamykał się, aby móc pisać dalej, użyj cmd /k
polecenia na końcu pliku.
cmd /k
zamiast tego umieść je przed poleceniem. & cmd /k
nie zadziała.
Jeśli chcesz, aby cmd.exe nie zamykał się i mógł kontynuować pisanie, użyj
cmd /k
Po prostu poczułem potrzebę wyjaśnienia, co /k
robi (ze strony Windows):
/k
: Wykonuje polecenie określone przez ciąg i kontynuuje.
Więc cmd /k
bez polecenia kontynuacji na końcu pliku nietoperza po prostu pozostawi cmd.exe
otwarte okno do dalszego użycia.
Z drugiej strony pause
na końcu pliku wsadowego po prostu wstrzyma proces i zakończy się cmd.exe
po pierwszym naciśnięciu przycisku
Poniższy sposób posiadania poleceń w pliku wsadowym otworzy nowe okna wiersza polecenia, a nowe okna nie wyjdą automatycznie.
start "title" call abcd.exe param1 param2
start "title" call xyz.exe param1 param2
Jeśli używasz Maven i chcesz pominąć pisanie i uniemożliwić zamknięcie konsoli, aby zobaczyć wynik, musisz użyć CALL
polecenia w skrypcie, oprócz samej „czystej instalacji mvn”.
W ten sposób zamkniesz konsolę
ECHO This is the wrong exemple
mvn clean install
pause
W ten sposób konsola pozostanie otwarta
ECHO This is the right exemple
CALL mvn clean install
pause
Jeśli nie użyjesz CALL
polecenia, żadna z przeszłych przykładów nie będzie działać.
call <myCommand>
rozwiązało ten problem: Mój monit przestał się zamykać po pierwszej egzekucji
Dodaj cmd.exe
jako nowy wiersz poniżej kodu, który chcesz wykonać:
c:\Python27\python D:\code\simple_http_server.py
cmd.exe
python script.py %1 && cmd
moim sposobem jest napisanie rzeczywistej partii (mówiąc „foo.bat”), aby zakończyć zadanie; następnie utwórz kolejny plik „start.bat”:
@echo off
cmd /k foo.bat
Uważam, że jest to niezwykle przydatne, gdy konfiguruję jednorazowe zmienne środowiskowe.
cmd /k
(bez żadnego polecenia) umieścić na końcu foo.bat
pliku i uruchomić go. Nie potrzebujesz osobnego start.bat
pliku.
Wywołaj cmd
na końcu pliku wsadowego.
oprócz pause
.
set /p=
można użyć. Oczekuje danych wejściowych od użytkownika i zwolni przepływ po naciśnięciu klawisza enter.
lub
runas /user:# "" >nul 2>&1
który zrobi to samo, chyba że nic z danych wprowadzonych przez użytkownika nie zostanie wyświetlone ani nie pozostanie w historii poleceń.
Możliwość 1: Po prostu utwórz 2 pliki .bat i napisz do pierwszego:
start <filename> // name of 2nd batch file
exit
Plik wsadowy 2 to plik, który nie zostanie zamknięty na końcu. Więc teraz, kiedy otworzysz partię nr 1, rozpocznie się druga i sama cloe. Po 2. zakończeniu nie zamknie się całkowicie (o ile nie umieścisz wyjścia na końcu)
Możliwość 2: Plik wsadowy 1:
call <filename>
cls
echo End of file
pause
<any code you want>
Kiedy drugi plik się skończy, przejdzie do pliku 1 i wyśle resztę. Dzięki temu możesz nawet tworzyć programy obsługi błędów. Jeśli nr 1 ulega awarii, przechodzi w nr 2 i wyświetla go
Ten mały hack prosi użytkownika o wpisanie klucza i zapisuje go w zmiennej% exitkey% (ta zmienna może być nazywana, co tylko zechcesz).
set /p exitkey= "Press any key to continue..."
Uwaga: spacja po „=” jest bardzo ważna
Wiem, że się spóźniam, ale moim ulubionym sposobem jest:
:programend
pause>nul
GOTO programend
W ten sposób użytkownik nie może wyjść za pomocą enter.
Można to zrobić na dwa sposoby, zależnie od przypadku użycia
1) Jeśli chcesz, aby polecenie cmd systemu Windows pozostało otwarte, abyś mógł zobaczyć wynik wykonania i zamknąć go później; posługiwać się
pause
2) jeśli chcesz, aby polecenie cmd systemu Windows pozostało otwarte i pozwoliło na wykonanie niektórych poleceń po słowie; posługiwać się
cmd
Łatwo, dodaj cmd do ostatniej linii nietoperza, ALE! jeśli zresetujesz lub wyczyścisz ścieżkę systemową, musisz uruchomić cmd pełną ścieżką, na przykład:
%windir%\system32\cmd.exe
Na przykład mam plik nietoperza, aby zresetować jdk do starej wersji w następujący sposób:
PATH=C:\Program Files\Java\jdk1.6.0_45\bin;C:\apache-ant-1.7.1\bin
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45
%windir%\system32\cmd.exe
ponieważ zresetowałem ścieżkę systemową, muszę uruchomić cmd z pełną ścieżką, inaczej system nie może znaleźć cmd.exe, uruchomienie cmd nie powiedzie się i po prostu zamknę okno, a nie będzie widać błędu msg .