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?


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


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 .


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.