Не является внутренней или внешней командой, исполняемой программой или пакетным файлом — как исправить?

Как исправить Не является внутренней или внешней командой, исполняемой программой или пакетным файломПри выполнении команд в командной строке Windows 10 и Windows 11 вы можете получить сообщение об ошибке, где указано первое «слово» вашей команды — adb.exe, pip или python, npm или git, java, telnet или любое другое, а далее — не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

В этой инструкции подробно о том, что означает такое сообщение, почему появляется и как исправить ошибку при выполнении наиболее распространённых команд в командной строке.

Причины ошибки «Не является внутренней или внешней командой» при выполнении команд в командной строке Windows 10 и Windows 11

Для того, чтобы понять суть ошибки, давайте рассмотрим, что происходит при выполнении команды в командной строке, в качестве примера будем использовать такой код:

команда параметр1 параметр2
  1. В случае, если «команда» является собственной встроенной командой консоли (в качестве примера — cls), она выполняется с заданными параметрами.
  2. Если «команда» — это какой-то файл .exe, .cmd, .bat или иной, например, pip, python или adb, выполняется попытка его запуска из расположения, где запущена командная строка (выделено на изображении ниже) или из расположений, добавленных в системную переменную PATH (о которой поговорим подробнее далее). При удачном запуске и правильно переданных параметрах команда выполняется. Не является внутренней или внешней командой, исполняемой программой или пакетным файлом в командной строке

Отсюда следуют наиболее распространённые причины появления ошибки при выполнении команды:

  • Самая распространённая причина — отсутствие исполняемого файла в папке, где запущена командная строка и в папках, содержащихся в PATH.
  • Ошибки при написании команды: при ошибке в имени файла, он не будет найден, что и приведёт к указанной ошибке.
  • Файл отсутствует где-либо, например, вы пробуете использовать telnet, в то время, когда соответствующий компонент Windows не установлен.
  • Редко — запускаемый через командную строку файл действительно не является исполняемой программой: изначально сам по себе или из-за повреждений.

Теперь о том, что делать в рассматриваемой ситуации.

Как исправить ошибку

Для исправления ошибки «Не является внутренней или внешней командой, исполняемой программой или пакетным файлом» в зависимости от ситуации можно использовать следующие подходы.

Переход к папке с исполняемым файлом в командной строке

Если выполнение команды требуется не на регулярной основе, достаточно перейти в командной строке в папку, содержащую нужный файл, делается это следующим образом:

  1. Например, мы знаем, что python.exe для последней версии Python на момент написания этой статьи располагается в папке
    C:\Users\имя_пользователя\AppData\Local\Programs\Python\Python39
    pip.exe — там же во вложенной папке Scripts (если окажется не ясным, как попасть в эту папку, процесс показан в видео ниже), adb.exe — где-то в папке с platform-tools и так далее. Скопируйте этот путь, сделать это можно из адресной строки проводника.
  2. Если командная строка запущена на том же диске, где находится нужный исполняемый файл, введите команду вида:
    cd полный_путь_к_папке_с_исполняемым_файлом
  3. Если командная строка запущена на диске C:, а исполняемый файл находится на другом диске, то перед 2-м шагом используйте команду вида (здесь D меняем на нужную букву диска) D: с последующим нажатием Enter.
  4. Введите нужную команду, которая ранее сообщала об ошибке — теперь она должна выполниться успешно.
Выполнение команды с указанием папки

Добавление папки с программой в системную переменную среды PATH

В случае, когда использование команд требуется регулярно, например, для git, разумным будет добавить папку с этим исполняемым файлом в PATH, чтобы затем в любой момент времени выполнять команды, независимо от того, в какой папке открыта командная строка:

  1. Введите в поиск на панели задач Windows 10 или Windows 11 «Изменение переменных среды» или нажмите клавиши Win+R, введите sysdm.cpl, нажмите Enter, а в окне свойств системы перейдите на вкладку «Дополнительно». Изменение переменных среды в поиске Windows
  2. Нажмите кнопку «Переменные среды». Открыть параметры системных переменных среды
  3. В следующем окне вы можете добавить папку с исполняемым файлом в переменную PATH только для текущего пользователя или для системы в целом. Выбираем Path в нижней панели и нажимаем «Изменить». Изменить системную переменную PATH
  4. В следующем окне нажимаем «Создать» и вставляем путь к папке с исполняемым файлом, используемом в вашей команде. Добавление папки в системную переменную PATH
  5. Сохраняем настройки. Также следует перезапустить командную строку.

Готово: если всё было указано верно, теперь вы сможете выполнять соответствующие команды без указания полного пути к исполняемым файлам, а сообщение об ошибке появляться не будет.

Примечание: если ошибка возникает при использовании команд python, обратите внимание, что при первоначальной установке вам предложат добавить необходимые пути в PATH (отметка Add Python to PATH), то же самое часто бывает и при установке других программ:

Добавление Python в PATH при установке

Установка недостающих компонентов

Иногда проблема возникает из-за того, что нужный файл попросту отсутствует на компьютере:

  • Вы пробуете использовать команды telnet, но не зашли в Панель управления —Программы и компоненты — Включение или отключение компонентов Windows и не включили «Клиент Telnet». Включение клиента Telnet
  • Запускаете команды pyinstaller, но предварительно не установили его командой pip install pyinstaller
  • Пробуете использовать команды adb.exe, но не установили необходимые компоненты Android SDK Platform Tools.

Аналогичная ситуация может быть и для многих других, не входящих в стандартную поставку Windows 10 и Windows 11 компонентов, например, java.

Если ошибка возникает при запуске системных инструментов Windows

В ситуации, когда сообщение «Не является внутренней или внешней командой» в командной строке выдается при попытке использовать системные инструменты, такие как sfc /scannow или slmgr:

  1. Внимательно проверьте правильность написания команды: раскладка, пробелы.
  2. Убедитесь, что соответствующие файлы есть в системе (обычно — в C:\Windows\System32). Попробуйте запустить их напрямую из этой папки (перейдя в папку с помощью cd C:\Windows\System32) и с указанием расширения, для файлов в примере — sfc.exe и slmgr.vbs
  3. Убедитесь, что в системной переменной среды PATHEXT указаны следующие расширения: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

Видео инструкция

Надеюсь, статья и видео помогли разобраться с проблемой и помогли в её решении. Остаются вопросы? — задавайте их в комментариях, я постараюсь ответить.

Комментарии (10) к Не является внутренней или внешней командой, исполняемой программой или пакетным файлом — как исправить?

  • Сергей

    Мне не помогло :( как и было, так и осталось.
    Может будет надо, у меня такая проблема с «poetry»
    Установлен он был через команду —

    pip install --user poetry

    Всё сделал по инструкций и попробовал два способа с этого сайта, ни один из них не работает, почему? :(

    Ответить

    • Dmitry

      Эх… я не питонист, но у меня такая мысль: а если запустить в виде

      путь_python.exe poetry параметры

      Ответить

  • Вадим

    Кто знает, почему при запуске .bat-файла из .hta-приложения консоль не может найти pnputil? Пишет не является внутренней или внешней командой. При этом при запуске батника вручную всё работает. В нем специально прописывал полный путь к pnputil, прописывал актуальное содержимое в переменную PATH, всё без толку. Суть в том, что нужна простая html-оболочка для запуска установки драйвера .inf, но через .hta работать не хочет.

    Ответить

    • Максим

      Добрый день.

      Удалось вам решить данную проблему? Столкнулся с аналогичной.

      Ответить

  • danil

    «-m» не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

    Ответить

    • Dmitry

      а полный текст команды какой? просто -m — это параметр, перед этим еще что-то должно быть

      Ответить

  • Денис

    благодарю очень помогло

    Ответить

  • Ildar

    Я проверил и узнал что в system32 нет sfc.exe, есть только sfc.exe.mui. Я пытался в system32 засунуть sfc.exe, который скачал с инета, но пишет что system32 уже где то открыта. Поэтому в path указал путь к папке где находится sfc.exe. Но не сработало, уже не пишет что такой команды нет, но не пишет ничего, то есть ничего не происходит. Надеюсь на вас)

    Ответить

    • Dmitry

      Здравствуйте.
      SFC.exe — не единственный используемый для выполнения задачи файл. Там еще как минимум две DLL в комплекте (sfc.dll и sfc_os.dll), а может и что-то еще.
      Ну и не знаю, правильно ли их брать из интернета. Возможно, вам лучше таким подходом воспользоваться: https://remontka.pro/in-place-upgrade-windows/

      Ответить

Оставить комментарий

Интересное
Список инструкций Windows 11 Windows 10 Подписаться