Когда вы запускаете программу из командной строки, заголовок окна командной строки временно изменяется, чтобы включить выполняемую команду. После завершения команды заголовок возвращается к исходному значению. Например:
==>
==> ![enter image description here](https://i.stack.imgur.com/Ru73a.png)
ЗаВ течение многих лет я накопил много коротких «служебных» пакетных файлов: большинство из них были написаны и в основном использовались на машине с Windows 7, где все они работают «как положено». Однако недавно я заметил, что некоторые командные файлы ведут себя странно при запуске под Windows 10: строка заголовка не сбрасывается после завершения команды. Например, после многократного запуска командного файла, который я назвал nd
(который перемещается в «следующий каталог»), строка заголовка выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/mUODh.png)
После некоторых копаний, минимальный пример:
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
после контроля вернул будет работать, но немного неловко.