Вопрос:
Я пропустил изменение внутренней команды “Тайм-аут” Windows?
У меня есть пакетный файл в течение длительного времени, который показывает мне номер версии программы. Я добавил команду тайм-аута, чтобы открыть окно CMD на несколько секунд. Итак, мой пакетный файл выглядит следующим образом:
context -version timeout 7
Это отлично работает, но, поскольку некоторые обновления Windows (очевидно), окна CMD закрываются напрямую, как если бы команда тайм-аута больше не работала. Когда я запускаю файл из окна CMD, я получаю сообщение:
D:CTX> тайм-аут 7
Попробуйте “таймаут –help” для получения дополнительной информации.
Файл так же, как и с тех пор, как я его создал, но поведение для меня нова.
Так может кто-нибудь сказать мне, что я здесь не так?
Лучший ответ:
Я полагаю, что вы, вероятно, приобрели другую версию timeout так как подсказка —help является опцией-спецификатором стиля *nixy.
Попробуйте, из приглашения
where /T timeout.*
который должен timeout версии timeout на path и может помочь в поиске версии изгоев.
Ответ №1
TIMEOUT не является внутренней командой cmd.exe (интерпретатор команд Windows), например FOR или DIR.
Это внешняя команда, которая означает, что консольное приложение находится в каталоге Windows %SystemRoot%System32.
При использовании только timeout без расширения файла и без полного пути интерпретатор команд Windows сначала ищет в текущем каталоге с timeout.* Для файла, имеющего расширение файла, указанное в переменной среды PATHEXT.
Если такой файл не найден в текущем каталоге, интерпретатор команд Windows продолжает поиск timeout.* С расширением файла, указанным в PATHEXT, в каталогах, определенных в переменной среды PATH.
В Windows Vista и более поздних версиях Windows система PATH определяется с помощью:
%SystemRoot%system32;%SystemRoot%system32;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;
По этой причине обычно используется первый %SystemRoot%System32timeout.exe при использовании только timeout в пакетном файле.
Но если текущий каталог содержит файл с timeout.* расширением файла, также указанным в переменной среды PATHEXT, или PATH был переопределен локально или в системном порядке установщиком, который ставил другие пути каталога в начале, а не добавлял их в конец и один в этих каталогах также содержится файл timeout.*, интерпретатор команд Windows запускает этот исполняемый файл или скрипт.
Предложения по решению этой проблемы:
-
Используйте в пакетном файле %SystemRoot%System32timeout.exe потому что тогда интерпретатор команд Windows не должен искать этот исполняемый файл, и не может произойти ошибочный ошибочный timeout, за исключением того, что переменная среды SystemRoot изменена локально, что очень маловероятно по сравнению с манипуляциями PATH.
-
Откройте Панель управления Windows – Система – Расширенные системные настройки (синяя ссылка слева), выберите вкладку Дополнительно, нажмите кнопку ” Переменные среды”…, найдите в нижней половине списка Системные переменные для Пути, выберите эту переменную среды, нажмите Изменить и переместить все пути каталога слева или выше (зависит от версии Windows) от %SystemRoot%system32 до конца списка каталогов.
-
Пожалуйста, сообщите автору приложения или пакета программного обеспечения, которые модифицировали систему PATH и вставляли свои пути к каталогам в начале, а не добавляли их в конце об этой неправильной модификации системы Windows PATH.
Как уже писал Magoo: timeout.* Портирован из Unix в Windows, очевидно, выполняется на вашей машине Windows из-за вывода справки. Чтобы получить справку по команде в Windows, команда должна выполняться обычно с параметром /? а не с -h или —help как на Unix.