Нечетные изменения в строке заголовка командной строки под Windows 10 - PullRequest
2 голосов
/ 01 октября 2019

Когда вы запускаете программу из командной строки, заголовок окна командной строки временно изменяется, чтобы включить выполняемую команду. После завершения команды заголовок возвращается к исходному значению. Например:

enter image description here ==> enter image description here ==> enter image description here

ЗаВ течение многих лет я накопил много коротких «служебных» пакетных файлов: большинство из них были написаны и в основном использовались на машине с Windows 7, где все они работают «как положено». Однако недавно я заметил, что некоторые командные файлы ведут себя странно при запуске под Windows 10: строка заголовка не сбрасывается после завершения команды. Например, после многократного запуска командного файла, который я назвал nd (который перемещается в «следующий каталог»), строка заголовка выглядит следующим образом:

enter image description here

После некоторых копаний, минимальный пример:

aa.bat :

(bb)

bb.bat (который находится на PATH):

dir

Ключ, кажется, является комбинацией первого пакетного файла , передающего элемент управления второму, вместо его вызова (вещиработает как ожидалось, если aa.bat содержит (call bb)) и , находящиеся внутри конструкции (...) (просто наличие bb само по себе также работает как положено) 1 .

В Windows 7 все варианты работают «как положено» и возвращают строку заголовка к исходному значению после завершения команды. В моем случае Windows 10 - это версия 10.0.17763.615 , а Windows 7 - 6.1.7601 .

Кто-нибудь знает (a) почему Windows 10 ведет себя таким образом, или - что более важно - (b) есть более простой способ остановить его без необходимости заменять все такие «цепные» вызовы, скажем, (call bb && goto :eof) 1 ?


1 Более реалистичная ситуация и причина включения (...), то, что второй пакетный файл вызывается из оператора типа IF condition ( ... ) ELSE ( ... ), и я не хочу, чтобы элемент управления вернулся к исходному пакетному файлу. Использование call и затем goto :eof после контроля вернул будет работать, но немного неловко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...