Perl не является внутренней или внешней командой исполняемой программой или пакетным файлом
Такой маленько глупенький вопрос, но не понимаю строчки из обучения:
"Если читатель по тексту программы уже понял, как она будет работать (надеемся, что наши комментарии помогли ему в этом), то теперь самое время проверить его догадку — выполнить эту программу. Но прежде следует в обычном текстовом редакторе набрать ее текст и сохранить в файле с расширением pl. Программы Perl являются обычными текстовыми файлами и для их создания можно использовать любой текстовый редактор: в UNIX, например, всегда доступные vi и ed, а в Windows — Блокнот (notepad.exe) или редактор программы Far."
"Для выполнения программы примера 2.1, сохраненной в файле programl.pl, в любой операционной системе, имеющей командную строку, достаточно набрать в ней команду:
Объясните мне, что нужно сделать. Ну я в Блокнот написал там код "Пример 2.1. Простая программа-приветствие ", который предоставлялся. Сохранил с форматом .pl, а что-то дальше не понял!
> Объясните мне, что нужно сделать.
В Windows 7: Пуск - В строке поиска набрать cmd.exe нажать Enter. Откроется консольное окно, в нем написать:
perl --help
Если напечаталось много строчек с опциями перла, то сменить рабочую папку на ту где лежит перловый скрипт командой cd. Например myprog.pl я сохранил в C:\work, тогда в командной строке надо написать:
cd c:\work
perl myprog.pl
Если же при вводе команды perl --help выведется:
"perl" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
то нужно добавить путь к perl.exe в переменную path. Допустим perl.exe лежит в C:\perl\bin. В Windows 7: Компьютер - Свойства - Дополнительные параметры системы - Переменные среды - Переменная Path - Изменить - дописать в нее путь - для моего примера дописать строку ;C:\perl\bin .
Пуск - cmd.exe:
perl --help
Если опять вылезет:
"perl" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
То путь добавлен не правильно. Иначе все должно работать.
ЗЫ: зачем ты флудишь одним и тем же вопросом? не делай так больше.
ЗЫЫ: если все, что написано здесь тебе не понятно, то сделай так: Пуск - Панель управление - Удаление программ - найти там perl - выбрать "Удалить".
Ок написал: D:\usr\MySQL\bin>mysqla~1.exe -u root появилось:
D:\usr\MySQL\bin>mysqla~1.exe -u root
mysqla~1.exe Ver 8.40 Distrib 4.0.26, for Win32 on ia32
Copyright © 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Variables (--variable-name=value)
and boolean options
--------------------------------- -----------------------------
count 0
force FALSE
compress FALSE
character-sets-dir (No default value)
host (No default value)
port 3306
relative FALSE
socket (No default value)
sleep 0
user root
verbose FALSE
vertical FALSE
connect_timeout 43200
shutdown_timeout 3600
Where command is a one or more of: (Commands may be shortened)
create databasename Create a new database
drop databasename Delete a database and all its tables
extended-status Gives an extended status message from the server
flush-hosts Flush all cached hosts
flush-logs Flush all logs
flush-status Clear status variables
flush-tables Flush all tables
flush-threads Flush the thread cache
flush-privileges Reload grant tables (same as reload)
kill id,id. Kill mysql threads
password new-password Change old password to new-password
ping Check if mysqld is alive
processlist Show list of active threads in server
reload Reload grant tables
refresh Flush all tables and close and open logfiles
shutdown Take server down
status Gives a short status message from the server
start-slave Start slave
stop-slave Stop slave
variables Prints variables available
version Get version info from server
D:\usr\MySQL\bin>mysqla~1.exe create testbase
mysqla~1.exe: CREATE DATABASE failed; error: 'Access denied for user: '@localhos
t' to database 'testbase''
D:\usr\MySQL\bin>create database forum
"create" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
D:\usr\MySQL\bin>create databaseforum
"create" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
D:\usr\MySQL\bin>mysqla~1.exe create forum
mysqla~1.exe: CREATE DATABASE failed; error: 'Access denied for user: '@localhos
t' to database 'forum''
Причины ошибки «Не является внутренней или внешней командой» при выполнении команд в командной строке Windows 10 и Windows 11
Для того, чтобы понять суть ошибки, давайте рассмотрим, что происходит при выполнении команды в командной строке, в качестве примера будем использовать такой код:
- В случае, если «команда» является собственной встроенной командой консоли (в качестве примера — cls), она выполняется с заданными параметрами.
- Если «команда» — это какой-то файл .exe, .cmd, .bat или иной, например, pip, python или adb, выполняется попытка его запуска из расположения, где запущена командная строка (выделено на изображении ниже) или из расположений, добавленных в системную переменную PATH (о которой поговорим подробнее далее). При удачном запуске и правильно переданных параметрах команда выполняется.
Отсюда следуют наиболее распространённые причины появления ошибки при выполнении команды:
- Самая распространённая причина — отсутствие исполняемого файла в папке, где запущена командная строка и в папках, содержащихся в PATH.
- Ошибки при написании команды: при ошибке в имени файла, он не будет найден, что и приведёт к указанной ошибке.
- Файл отсутствует где-либо, например, вы пробуете использовать telnet, в то время, когда соответствующий компонент Windows не установлен.
- Редко — запускаемый через командную строку файл действительно не является исполняемой программой: изначально сам по себе или из-за повреждений.
Теперь о том, что делать в рассматриваемой ситуации.
Для исправления ошибки «Не является внутренней или внешней командой, исполняемой программой или пакетным файлом» в зависимости от ситуации можно использовать следующие подходы.
Переход к папке с исполняемым файлом в командной строке
Если выполнение команды требуется не на регулярной основе, достаточно перейти в командной строке в папку, содержащую нужный файл, делается это следующим образом:
- Например, мы знаем, что python.exe для последней версии Python на момент написания этой статьи располагается в папкеpip.exe — там же во вложенной папке Scripts (если окажется не ясным, как попасть в эту папку, процесс показан в видео ниже), adb.exe — где-то в папке с platform-tools и так далее. Скопируйте этот путь, сделать это можно из адресной строки проводника.
- Если командная строка запущена на том же диске, где находится нужный исполняемый файл, введите команду вида:
- Если командная строка запущена на диске C:, а исполняемый файл находится на другом диске, то перед 2-м шагом используйте команду вида (здесь D меняем на нужную букву диска) D: с последующим нажатием Enter.
- Введите нужную команду, которая ранее сообщала об ошибке — теперь она должна выполниться успешно.
Добавление папки с программой в системную переменную среды PATH
В случае, когда использование команд требуется регулярно, например, для git, разумным будет добавить папку с этим исполняемым файлом в PATH, чтобы затем в любой момент времени выполнять команды, независимо от того, в какой папке открыта командная строка:
Примечание: если ошибка возникает при использовании команд python, обратите внимание, что при первоначальной установке вам предложат добавить необходимые пути в PATH (отметка Add Python to PATH), то же самое часто бывает и при установке других программ:
Установка недостающих компонентов
Иногда проблема возникает из-за того, что нужный файл попросту отсутствует на компьютере:
- Вы пробуете использовать команды telnet, но не зашли в Панель управления —Программы и компоненты — Включение или отключение компонентов Windows и не включили «Клиент Telnet».
- Запускаете команды pyinstaller, но предварительно не установили его командой pip install pyinstaller
- Пробуете использовать команды adb.exe, но не установили необходимые компоненты Android SDK Platform Tools.
Аналогичная ситуация может быть и для многих других, не входящих в стандартную поставку Windows 10 и Windows 11 компонентов, например, java.
Если ошибка возникает при запуске системных инструментов Windows
Видео инструкция
Надеюсь, статья и видео помогли разобраться с проблемой и помогли в её решении. Остаются вопросы? — задавайте их в комментариях, я постараюсь ответить.
Довольно часто мне задают вопрос о том, как запустить скрипт через консоль Windows. Многие запускают скрипты двойным кликом и не могут понять, почему скрипт прекращает свою работу. Поэтому решил написать небольшую инструкцию по запуску Perl-скриптов через консоль.
Как запустить консоль:
2. Ввести "cmd" и нажать Enter
Появится подобное окно
Консоль поддерживает множество команд - ntcmds
Однако, для того, чтобы запустить скрипт, достаточно уметь пользоваться одной - cd.
Как запустить скрипт:
Предположим, на диске C: есть директория script, и в ней лежит скрипт test.pl.
Для того, чтобы его запустить, требуется предварительно перейти в директорию со скриптом, набрав в консоли:
cd c:\script
и нажать Enter. На экране отобразится нечто подобное:
Теперь нужно ввести имя скрипта (test.pl) и нажать Enter:
Если скрипт не запустился, и консоль выдала подобный текст:
"test.pl" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
или
'test.pl' is not recognized as an internal or external command,
operable program or batch file.
То запускать придется так:
c:\perl\bin\perl.exe test.pl
c:\perl\bin\perl.exe - путь до интерпретатора Perl, test.pl - запускаемый скрипт. Естественно, у вас в системе должен стоять ActivePerl или какой-нибудь другой интерпретатор.
Надеюсь, теперь мне перестанут задавать вопросы про консоль.
Всем привет, простите, что приходится возиться с новичком)) В общем, учу Python по книге A Byte of Python (Russian) Версия 2.01 Swaroop C H (Translated by Vladimir Smolyar). При написании простой программы, которая создает резервные копии файлов у меня вывелась такая вот ошибка. Архиватор стоит у меня WinRAR. Проверил переменную Path, путь к папке этого архиватора там тоже есть. Прошу помочь!
А вы уверены, что в вашей WinRAR папке лежит исполняемый файл zip.exe? Поскольку ваша программа пытается вызвать этот самый исполняемый файл.
3 ответа 3
Пишу пост впервые, поэтому сильно не ругайте, сам только учусь (стаж - 1 неделя :D ). Я смог заставить работать WinRar за место Zip'а, но немного изменил код, у меня он получился таким:
В 3 и 4 строчке изменил путь, предыдущий меня не устраивал, пускай не так красиво, но вроде работает.
В переменной zip_command (7 строка) изменил zip на rar (Гениально) аргумент поставил "а", то бишь создать архив, по факту это все изменения.
В переменную path добавил путь к WinRar, у меня он такой:
После в терминале (использую Visual Studio Code) нужно указать путь к папке, (команда вызова rar не работает, выдает ту же самую ошибку что нет такой команды. Подскажите кто в теме, я в силу отсутствия опыта и знаний сказать точно не могу :) ) путь таков:
После запуска программы все работает:
Надеюсь у Вас тоже заработает, пишите если что-то не так.
UPD: Понял причину почему rar не работает через path, хотя путь добавлен был верно, проверил догадку на счет пути к самой директории WinRar, он был: C:\Program Files\WinRAR\rar.exe Видимо из-за пробела в Program Files (А может из-за еще чего) было невозможно вызвать rar из командной строки. Перенес директорию WinRar в другое место (чтобы путь директории был без пробелов), поставил новый путь:
и вуаля - rar вызывается, программа работает без костыля с указанием папки в терминале.
Читайте также: