Dlaczego mój wiersz polecenia zawiesza się w systemie Windows 10?

146

Dodaje to pytanie po spędzeniu całego dnia na zmaganiach z tą niesamowicie frustrującą funkcją wiersza poleceń systemu Windows 10, która sprawiła, że ​​pomyślałem, że coś jest nie tak z kodem mojej aplikacji konsolowej. Mam nadzieję, że komuś to pomoże.

Problem: moja aplikacja konsoli wydaje się losowo przestać działać. Co się dzieje?

Shaun Rowan
źródło
2
Musisz także nacisnąć Enter, aby kontynuować uruchamianie programu
wrivas

Odpowiedzi:

270

Problem okazał się być nową funkcją konsoli Windows 10. Zgodnie z domyślną konfiguracją, za każdym razem, gdy klikniesz okno poleceń w systemie Windows 10, natychmiast zatrzymuje proces aplikacji, gdy próbuje pisać do konsoli. Kiedy tak się dzieje, okno poleceń przeszło w tryb „wyboru”.

Możesz powiedzieć, że to się stało, ponieważ poprzedzi pasek tytułu okna poleceń słowem „Wybierz”:

zamrożone okno poleceń

Aby ponownie uruchomić program, musisz nacisnąć klawisz Escape lub kliknąć gdzie indziej.

Aby pozbyć się tego dziwnego zachowania, możesz wyłączyć tryb QuickEdit:

wyłącz tryb QuickEdit

Shaun Rowan
źródło
26
Mój Boże, dzięki! Radzę sobie z tym przez rok LOL. Być może będziesz musiał odznaczyć opcję, ZAMKNIJ terminal i ponownie go OTWÓRZ. Przynajmniej tak to działa dla mnie (w przeciwnym razie automatycznie włączy to ponownie.)
user2875289
3
Miałem wielogodzinną kompilację, która z tego powodu ciągle się zamrażała. Cieszę się, że opublikowałeś rozwiązanie!
Joel
2
Chociaż ta odpowiedź pomogła wyłączyć zamrażanie po kliknięciu, przewijanie paska bocznego również zamraża. Poprzednie zachowanie było zawieszane, gdy pasek przewijania był przytrzymywany, a wynik był drukowany po zwolnieniu paska przewijania. Masz jakiś pomysł, jak przywrócić stare zachowanie / odmrozić je? Esc lub enter nie działa.
quimnuss
6
to bardzo stara funkcja umożliwiająca szybsze kopiowanie i wklejanie. Po prostu Windows 10 zaczyna go domyślnie włączać. Jak wyłączyć prawym przyciskiem myszy, aby wkleić w PowerShell?
phuclv
3
„Funkcja nie jest błędem” jest zmorą użytkowników na całym świecie
tschwab
20

To, co chciałbym tutaj dodać do odpowiedzi Shauna Rowana, to to, że aby to działało we wszystkich oknach konsoli, musisz kliknąć "Domyślne", zamiast "Właściwości" i wprowadzić tam swoje zmiany, jak opisano w tym poście .

iko79
źródło
0

Niedawno spotkałem się z tym problemem, gdy jeden z użytkowników (który skonfigurował Quickedit w swoim wierszu polecenia) korzystał z narzędzia, które opracowałem w Javie i zamrażał to narzędzie podczas uruchamiania go z wiersza poleceń.

Wreszcie tym, co rozwiązało problem, było przekierowanie rejestrowania w skrypcie wsadowym do pliku, jak pokazano poniżej:

@echo off
...
java.exe -jar mytool.jar

trzeba było zaktualizować do

java.exe -jar mytool.jar > log.txt
Priyanku
źródło
1
Dla programistów ten wątek może być interesujący, możesz wyłączyć to zachowanie programowo za pomocą SetConsoleMode(kernel32.dll).
Groo