Pliki wsadowe: jak pozostawić otwarte okno konsoli

105

Mam dwa pliki wsadowe, jeden z nich wykonuje inny, tj

  1. „Mój plik wsadowy”> 2. „Inny plik wsadowy”

Utworzyłem skrót do pierwszego pliku wsadowego i zmodyfikowałem jego właściwości, aby wywołać go w następujący sposób.

cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

Co chcę zrobić? Chcę, aby okno konsoli było otwarte po zakończeniu wykonywania pliku wsadowego. Teraz po prostu się zamyka, próbował bawić się flagami cmd, bez rezultatu.

Platforma: Windows7


AKTUALIZACJA 1

Zmodyfikowano strukturę, prosty przykład taki jak ten nie działa również, Tylko jeden plik wsadowy, tj. Nie ma 2. "Inny plik wsadowy" Jedyny plik wsadowy zawiera coś takiego

start /B /LOW /WAIT make package
cmd /K

AKTUALIZACJA 2

Ten sam skrót, który jest wywoływany z Eksploratora, nie zamyka okna konsoli. Ale okno konsoli zamyka się, gdy skrót jest wywoływany z przypiętego elementu na pasku zadań

Jakieś pomysły, jak zachować otwarte okno konsoli?

deimus
źródło
Zakładam, że chcesz, My Batch Fileżeby się tu zatrzymał?
Marc B
„Gorąco, aby zostawić otwarte okno konsoli z plikiem wsadowym” jest
pytane

Odpowiedzi:

126

Jeśli to naprawdę wszystko, co robi plik wsadowy, usuń cmd /Ki dodaj PAUSE.

start /B /LOW /WAIT make package
PAUSE

Następnie po prostu wskaż skrót, aby "My Batch File.bat"... nie trzeba go uruchamiać CMD /K.

AKTUALIZACJA

Ach, trochę nowych informacji ... próbujesz to zrobić z przypiętego skrótu na pasku zadań.

Znalazłem to, dodawanie plików wsadowych do paska zadań systemu Windows 7, takiego jak szybkie uruchamianie Vista / XP , z odpowiednią częścią poniżej.

  1. Najpierw przypnij skrót CMD.EXEdo paska zadań, naciskając przycisk Start, a następnie wpisz „cmd” w polu wyszukiwania, kliknij prawym przyciskiem myszy wynik i wybierz „Przypnij do paska zadań”.
  2. Kliknij prawym przyciskiem myszy skrót na pasku zadań.
  3. Zobaczysz listę zawierającą „ Wiersz polecenia ” i „ Odepnij ten program od paska zadań ”.
  4. Kliknij prawym przyciskiem myszy ikonę CMD.EXEi wybierz Properties.
  5. W polu Target przejdź na koniec "%SystemRoot%\system32\cmd.exe"i wpisz " /C "ścieżkę oraz nazwę pliku wsadowego.

Do swoich celów możesz:

  1. Użyj /Ci umieść PAUSEna końcu pliku wsadowego.

    LUB

  2. Zmień linię poleceń, która ma być używana, /Ki usuń PAUSEz pliku wsadowego.
aforia
źródło
Już to zrobiłem, w zasadzie moje pytanie nie brzmi jak wywołać inny plik wsadowy ...
deimus
Następnie musimy zobaczyć zawartość obu plików wsadowych.
aforia
Zobacz zaktualizowane pytanie
deimus
Ten sam problem, wymiana CMD / K nie działa. Dlaczego okno konsoli nie zamyka się, jeśli skrót jest wywoływany z Eksploratora?
deimus
13

Tutaj:

cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

Spójrz, co robisz:

  1. (cmd / K) Uruchom NOWĄ instancję cmd.
  2. (& pauza) Wstrzymaj wystąpienie CURRENT cmd.

Jak to rozwiązać? cóż, używając poprawnej składni, zawierając argument dla nowej instancji CMD:

cmd.exe /k ""<SomePath>\<My Batch File>.bat" & pause"
ElektroStudios
źródło
6

Właśnie napisałem ostatnią linię jako Pauza , działała dobrze zarówno z .bat, jak i .cmd. Wyświetli komunikat również jako „Naciśnij dowolny klawisz, aby kontynuować”.

Sai
źródło
To jest poprawna odpowiedź! Powinien być najlepszy w głosowaniu.
Patrick Hillert
5

W ostatnim wierszu pliku wsadowego, który chcesz pozostawić otwarty, umieść rozszerzenie

pause >nul

Bali C.
źródło
Wygląda na to, że kończy się wcześnie, może błąd w skrypcie. Spróbuj otworzyć monit cmd i uruchomić go z tego miejsca, a następnie sprawdź, czy są jakieś błędy.
Bali C
3

Aby pozostawić otwarte okno konsoli, wystarczy dodać do ostatniego wiersza poleceń w pliku wsadowym:

' & pause'
Umberto
źródło
2

Możesz po prostu umieścić pausepolecenie w ostatnim wierszu pliku wsadowego:

@echo off
echo Hey, I'm just doing some work for you.
pause

Jako wyjście da ci coś takiego:

Hej, po prostu wykonuję dla ciebie pracę.

Naciśnij dowolny klawisz, aby kontynuować ...

Uwaga: użycie @echo zapobiega wyświetlaniu polecenia przed wydrukowaniem wyniku.

Patrick Hillert
źródło
0
rem Just use "pause" at the end of the batch file.
...
......
.......
pause
David Castro
źródło
-1

na koniec ponownie otworzy konsolę

start cmd 
Nik
źródło
To nie rozwiązuje problemu, użytkownik chce pozostawić otwarte okno, a nie otwierać ponownie stare.
Adam
-5

Po prostu naciskam enter i wpisuję Pauza i działa dobrze

Jfly 27
źródło