7z не является внутренней или внешней командой исполняемой программой или пакетным файлом
Системные требования: Windоws 98/ME/NT/2000/XP/Vista/7/8/8.1 (имеется портированные версии для Linux/Unix).
Языки интерфейса: русский, английский и др. (более 80).
Последняя стабильная версия: 16.04 (04.10.2016)
Setup: x86 (SFX | MSI), x64 (SFX | MSI), Extra (x86/x64), LZMA SDK, Source
Последняя beta-версия: 15.11 (14.11.2015)
Setup: x86 (SFX | MSI), x64 (SFX | MSI), Extra (x86/x64), LZMA SDK, Source
Примечание:
Alpha и Beta-версии 7-Zip зачастую являются развитием "стабильных" версий с улучшениями и исправлениями багов.
Ссылки на альфы ищем в разделе Open Discussion форума проекта 7-Zip, там же можно получить и консультацию от разработчика.
- плагин для 7-Zip, отображающий значения хеш сумм файлов.
SET "tmpW=%date%%time: =%"
SET "tmpW=%tmpW:,=%"
SET "tmpW=%tmpW::=%"
SET "tmpW=%tmpW:.=%"
SET "tmpW=%TEMP%\win-%tmpW%"
SET "sys32=%windir%\system32"
SET "PROC=AMD"
IF "%PROCESSOR_ARCHITEW6432%"=="AMD64" ( mklink /d %tmpW% %windir% && SET "sys32=%tmpW%\system32" && SET "PROC=AMD32-64" )
START /belownormal /b %sys32%\cmd.exe /c ""D:\Programs\SharedFolder\BAT\7z\convert_archive.bat" %* "
У меня у друга так же "Работает на всех машинах!", но я уже ему если что из софта и даю, то только на оптике без возможности перезаписи - не раз после его машины на флешках или внешних дисках оказывался мусор, а данные и таблицы разделов были безвозвратно повреждены. У него-то "работает", да потом 2 Гб SD-ка Kingston почему-то оказывается имеет ёмкость не 1,9 Гб, а 50 Гб, и данные не читаются., а вместо имён файлов и каталогов виден мусор И даже команда format их не берёт пока под UNIX им таблицу разделов HEX редактором не исправишь, но ведь у него "всё работает!". А про его флешки я вообще не говорю - при записи на них любая машина минут на 40 - 50 после каждого файла "задумывается" - он их в NTFS отформатировал. И это несмотря на то, что у меня UNIX свободно NTFS и читает, и пишет с учётом всех прав доступа и атрибутов - драйвер NTFS в ядро встроен.
Я уже добавил проверку:
Смысл-то не меняется. И насчёт форума - спам-таки докатился и ко мне - несколько сотен штук спама вычистил из почты пока бэкапные ленты читались. А проверка это хорошо, пусть лучше скрипт ругается, чем после куча ругани от людей свалится. Правда в таком виде толку от неё нуль - что в лоб, что по лбу "У меня работает!". Проверять надо не переменную поставил или нет, а наличие бинарника 7z.exe и если его нет, сообщать об ошибке. В общем за логику скрипта гвардейский "кол", за реализацию "два балла", за упорство в отстаивании собственных недоделок "отлично", и для меня сей вопрос закрыт навсегда - "А у меня работает!". Издание второе, стереотипное, старые ошибки оставлены, новые добавлены. Это из серии пусть думает лошадь - у неё голова большая.
Всё просто - STABLE версия вообще 9.20, тестовая версия имеющая полный набор дистрибутивов - 9.22 BETA, а текущая версия в разработке 9.25 ALPHA.
Добавлено:
PS.
Изменил на по-умолчанию
Возможно ли сделать такой же, но для конвертации в zip?
Ну, вот так уже меньше вероятность ошибки, но ошибка осталась, и в другом - код:
SET "a7z=%ProgramFiles%\7-Zip\7z.exe"
IF NOT EXIST "%a7z%" ECHO По заданному пути "%a7z%" прога 7z.exe не найдена, поэтому выходим & PAUSE & GOTO END
предполагает, что 7z.exe уже установлен по этому пути. А если он находится в другом месте? Я бы вот откуда предложил прочитать путь к нему:
PS.
Сейчас подумаю, как более полную проверку сделать по разным веткам реестра.
Нет, бинарник не перезапишет- мы ведь только читаем значение из Реестра в переменную, и я привёл тот ключ, который если мы запускали инсталлер им создаётся всегда, но почему бы не использовать иной? Главное, чтобы он указывал на реальный путь к каталогу с 7-Zip и существовал на момент запуска скрипта, а где его взять это дело техники. Ключ QUERY только считывает указанные ему значения и ключи и выводит их на экран, но мы перехватываем его вывод и направляем в нужную нам переменную, и как приёмник можем использовать любую.
я к тому, что фраза "> %a7z%" отправит данные не в переменную a7z, а в файл, указанный в переменной a7z, т.е. файл, указанный в a7z, перезапишется данными из реестра. Тем более вывод reg query содержит много лишних данных.
надо делать что-то типа этого
[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
"Path64"="C:\\Program Files\\7-Zip\\"
[HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip]
"Path"="C:\\Program Files\\7-Zip\\"
"Path64"="C:\\Program Files\\7-Zip\\"
Конфигурация компьютера | |
Процессор: AMD FX-8320 3.5GHz | |
Материнская плата: ASUS M5A99X EVO R2.0 | |
Память: Kingston DDR3-2133 32768MB PC3-17000 HyperX Beast (KHX21C11T3K2) | |
HDD: TOSHIBA THNSNJ128GCSU/120Gb + WD3200AAKX/320Gb+320Gb + WD10EARS/1Tb | |
Видеокарта: ASUS Radeon R9 270X-R.I.P. NOW:Gigabyte GeForce GTX 970 Twin Turbo 4GB (GV-N970TT-4GD) | |
Блок питания: FSP 800W | |
CD/DVD: Samsung (SH-224DB) | |
ОС: W10 64-bit | |
Прочее: PCI-E LAN + PCI-E WIFI |
Здрасте!
Подскажите такой вопрос: как распаковать все архивы из папки - каждый в отдельную папку по названию архива с помощью консольной команды unzip.
НУЖНА ИМЕННО КОНСОЛЬНАЯ КОМАНДА.
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Конфигурация компьютера | |
Процессор: AMD FX-8320 3.5GHz | |
Материнская плата: ASUS M5A99X EVO R2.0 | |
Память: Kingston DDR3-2133 32768MB PC3-17000 HyperX Beast (KHX21C11T3K2) | |
HDD: TOSHIBA THNSNJ128GCSU/120Gb + WD3200AAKX/320Gb+320Gb + WD10EARS/1Tb | |
Видеокарта: ASUS Radeon R9 270X-R.I.P. NOW:Gigabyte GeForce GTX 970 Twin Turbo 4GB (GV-N970TT-4GD) | |
Блок питания: FSP 800W | |
CD/DVD: Samsung (SH-224DB) | |
ОС: W10 64-bit | |
Прочее: PCI-E LAN + PCI-E WIFI |
Ваш UnZip, очевидно, «встроен» в Windows XP сборщиками Вашего дистрибутива.
На оригинальном дистрибутиве его нет:
Конфигурация компьютера | |
Процессор: AMD FX-8320 3.5GHz | |
Материнская плата: ASUS M5A99X EVO R2.0 | |
Память: Kingston DDR3-2133 32768MB PC3-17000 HyperX Beast (KHX21C11T3K2) | |
HDD: TOSHIBA THNSNJ128GCSU/120Gb + WD3200AAKX/320Gb+320Gb + WD10EARS/1Tb | |
Видеокарта: ASUS Radeon R9 270X-R.I.P. NOW:Gigabyte GeForce GTX 970 Twin Turbo 4GB (GV-N970TT-4GD) | |
Блок питания: FSP 800W | |
CD/DVD: Samsung (SH-224DB) | |
ОС: W10 64-bit | |
Прочее: PCI-E LAN + PCI-E WIFI |
БЛИН СПАСИБО.
Весь гугл заморочил не нашел! А тут раз и помогли.
А можете расписать, что каждій атрибут конкретно значит?
for
%i
in
do
@(md и т.д.
И почему когда я заношу эту команду в BAT файл она не работает(((
И почему когда я заношу эту команду в BAT файл она не работает((( » |
Нужно удвоить символы «%» при переменной. Также, если в начале пакетного файла у Вас используется типичное «@echo off», можно убрать символ подавления эха «@» внутри цикла. Вот так:
Всем привет, простите, что приходится возиться с новичком)) В общем, учу 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 вызывается, программа работает без костыля с указанием папки в терминале.
Причины ошибки «Не является внутренней или внешней командой» при выполнении команд в командной строке 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
Видео инструкция
Надеюсь, статья и видео помогли разобраться с проблемой и помогли в её решении. Остаются вопросы? — задавайте их в комментариях, я постараюсь ответить.
При попытке открыть какую-либо команду через окно служебной программы или консоль, вы сталкиваетесь с ошибкой – «Имя файла» не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Система упрямо не открывает файл по каким-то причинам и этот факт очень раздражает. Причиной этого может быть один из нескольких вариантов: неправильно указан путь к файлу и отсутствие компонента в системе вообще, т.е по указанному адресу его не существует.
Основные причины, по которым появляется ошибка «не является внутренней или внешней командой»
Как уже было сказано, одна из причин заключается в неправильном указании пути к открываемому файлу. Обычно путь к файлу прописан в переменной «Path» в системе, должен быть указан строгий путь к директории, в котором размещены нужные файлы. Если имеются какие-то ошибки в настройках при указании пути в переменной, либо при указании имени файла, то система будет выдавать именно такую ошибку – «имя файла» не является внутренней или внешней командой, исполняемой программой.
Первым делом необходимо указать точный путь переменной «Path» операционной системе, чтобы не возникало ошибок при открытии файла. Для этого нужно наверняка знать расположение папки. К примеру, обратимся к программе, которая в дальнейшем будет работать с исполняемым файлом в определенной папке.
Переменная «Path» — это переменная операционной системы, которая служит для того, чтобы найти указанные исполняемые объекты через командную строку или терминал. Найти ее можно в панели управления Windows. В новых версиях Виндовс и других ОС указание вручную обычно не требуется.
Указываем правильный путь в переменной path на ОС Windows 7
Чтобы правильно указать путь необходимо знать точное расположение файла. Если файл программы, который нужно открыть лежит на диске в С:\Program Files\Java\jdk 1.8.0.45\bin, тогда этот путь нужно скопировать и указать в системной переменной для последующего открытия.
- Далее нам понадобиться рабочий стол, наводим мышь на «Мой компьютер» и в контекстном меню выбираем «Свойства».
- Нажимаем «Дополнительные параметры» слева и выбираем пункт «Переменные среды».
- В открывшемся окне ищем строку «Path» нажимаем на нее и вставляем скопированные путь сюда.
- Действие нужно подтвердить кнопкой «Ок». Компьютер желательно перезагрузить, чтобы настройки точно вступили в силу. Откройте консоль и вбейте нужную команду. Ошибки быть не должно.
В том случае, если ошибка будет появляться снова, попробуйте перенести программу в рабочие директории диска с установленной операционной системой, например /System32. С этой директорией Виндовс работает чаще.
Также ошибки возникают из-за отсутствия компонентов программы. Устранить их можно дополнив нужными. Для примера возьмем компонент «Telnet». Чтобы его включить, перейдите:
- На «Панель управления».
- Дальше выберите «Включение и выключение компонентов».
- Из списка выбираем «Клиент Telnet», напротив ставим галочку и нажимаем «Ок».
- Компонент должен работать и ошибок возникать больше не должно.
Читайте также: