«Зарегистрируйте» .exe, чтобы вы могли запустить его из любой командной строки в Windows

152

Как сделать файл .exe доступным из любого места в командном окне Windows? Есть ли какая-нибудь запись в реестре, которую нужно ввести?

HK1
источник
6
superuser.com
Дэвид Хеффернан,

Ответы:

97

Вы должны убедиться, что исполняемый файл находится в папке, которая находится в PATHпеременной среды.

Вы можете сделать это, либо установив его в папку, которая уже есть, PATHлибо добавив вашу папку в PATH.

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

ChrisF
источник
Этот ответ почти всегда неправильный. По крайней мере, он неполон. В частности, этот подход хорошо работает для установки, но не подходит для удаления. Большинство деинсталляторов удаляют всю переменную PATH при удалении приложения, связанного с этим. Поэтому, если вы пишете действие по установке, чтобы добавить каталог в PATH, вы должны сделать это ПОЛЬЗОВАТЕЛЬСКОЕ действие по установке, которое не будет автоматически удалено универсальным пакетом удаления. Затем сопоставьте этот шаг выборочной установки с шагом удаления, который удаляет только ваш каталог из переменной PATH.
Ким Гентес
21
@KimGentes хорошо, это проблема с деинсталлятором. Хороший деинсталлятор должен привести в порядок. Это не делает ответ неправильным.
ChrisF
3
Я согласен .. это проблема с установщиком. Но так как все установщики делают это с переменными (они не анализируют и не извлекают части записей реестра или переменные ENV), кажется разумным объяснить это. Если точно следовать указаниям, они всегда будут сталкиваться с этой проблемой, что означает, что решение, вероятно, должно всегда включать это предостережение. Никакие установочные пакеты не заботятся об установке и удалении разделов записей реестра или переменных ENV, о которых я знаю, хотя, пожалуйста, дайте мне знать, если есть некоторые, о которых я не знаю.
Ким Гентес
Вместо «установки» среды используйте командный файл с командой SETX: SETX PATH «C: \ Windows» ----- и все готово.
Ставм
3
SETX также опасен, потому что имеет гораздо меньший предел длины, чем сама переменная PATH, и будет обрезаться вместо сбоя.
Бен Фойгт
48

Вы можете добавить следующий реестра ключ :

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\myexe.exe

В этом ключе добавьте строковое значение по умолчанию, содержащее путь к exe-файлу.

Андреас Рейбранд
источник
1
@sherdim: я очень сомневаюсь в этом. Однако она всегда работала с startкомандой, поэтому вы можете ввести start myexeприглашение cmd.exe. Но myexeя думаю, что одно не должно работать (если только вы не находитесь в каталоге myexeили этот каталог не находится в PATHпеременной окружения).
Андреас Рейбранд,
Я просто создаю небольшой myprog.cmdфайл со следующим содержимым: @START myprog.exe %*это вызывает App Pathsзапись для myprog.exeи передает все аргументы команды. Файл должен быть создан где-то доступным вPATH
Stavr00
1
@sherdim @ andreas-rejbrand Я могу подтвердить, что это не работает на Windows 10, если myexe нет PATH. start myexeработает с этим изменением реестра, без добавления myexe в PATH.
davenpcj
@davenpcj: Действительно. Раздел реестра, о котором я упоминал, относится к оболочке Windows, а не к командной строке. Так start myappработает, как и Win + R myapp, но не обычный myappв cmd.exe.
Андреас Рейбранд
1
Этот ключ работает для запуска из Explorer.exe, если вы пытаетесь из CMD.exe он не найден.
Прамп
41

Вы должны поместить .exeпуть вашего файла в путь переменной среды. Перейдите в «Мой компьютер -> Свойства -> Дополнительно -> Переменные среды -> Путь» и отредактируйте путь, добавив .exeкаталог в путь.

Другое решение, которое я лично предпочитаю, - это использовать RapidEE для более плавного редактирования переменных.

darioo
источник
39

Windows 10, 8.1, 8

Откройте меню «Пуск»,

  1. Тип Edit environment variables
  2. Откройте опцию Edit the system environment variables
  3. Нажмите Environment variables...кнопку
  4. Там вы видите два поля, в System Variablesполе найдите pathпеременную
  5. щелчок Edit
  6. появится окно, нажмите New
  7. Введите каталог путь из ваших .exeили batchфайла ( каталог означает исключить имя файла из пути)
  8. Нажмите Okна все открытые окна и перезагрузите систему, перезапустите командную строку .
AmiNadimi
источник
4
Это единственный ответ, который мне помог. Я бы добавил, что «перезапуск системы» не нужен. Достаточно просто перезапустить cmd.
Джоффри Баратеон
С WinKey + R и введите
SystemPropertiesAdvanced
30

Вместо того, чтобы помещать исполняемый файл в каталог на пути, вы должны создать пакетный файл в каталоге на пути, который запускает программу. Таким образом, вы не отделяете исполняемый файл от поддерживающих его файлов и не добавляете другие вещи в том же каталоге к пути непреднамеренно.

Такой командный файл может выглядеть так:

@echo off
start "" "C:\Program Files (x86)\Software\software.exe" %*
Бен Фойгт
источник
1
Вы не возражаете добавить пример такого пакетного файла - было бы неплохо?
petermeissner
Я чувствую, что это лучший вариант, я не хотел добавлять слишком много вещей в переменную пути. Я отредактирую в этом примере ответа такого командного файла.
Дино
1
Проблема с этим заключается в том, что он запускает новую оболочку. Я пытаюсь заставить бинарный файл cygwin запускаться в той же оболочке, что он делает, если я ссылаюсь на него напрямую какC:\cygwin\bin\grep.exe
Johann
4
@Johann: достаньте start "" и начните с пути к исполняемому файлу. Кроме того, для использования в cygwin может потребоваться сценарий оболочки cygwin или символическая ссылка. Или псевдоним оболочки.
Бен Фойгт
Отлично спасибо! Я согласен с другими вашими вариантами внутри cygwin, но в этом случае я пытаюсь использовать бинарный файл cygwin от powershell.
Иоганн
5

Удивительно, что для такой простой задачи в Windows нет простого решения, я создал небольшой сценарий cmd, который можно использовать для определения псевдонимов в окнах (инструкции находятся в самом заголовке файла):

https://gist.github.com/benjamine/5992592

это почти такой же подход, который используется инструментами типа NPM или ruby ​​для регистрации глобальных команд.

Benja
источник
5

Допустим, мой exe-файл - C: \ Program Files \ AzCopy \ azcopy.exe.

Команда / CMD / Batch

SET "PATH=C:\Program Files\AzCopy;%PATH%"

PowerShell

$env:path = $env:path + ";C:\Program Files\AzCopy"

Теперь я могу просто набирать и использовать azcopyиз любого места из любой командной строки shell inc, powershell, git bash и т. Д.

Беван
источник
3
  • Если вы хотите иметь возможность запускать его внутри cmd.exe или пакетных файлов, вам нужно добавить каталог, в котором находится .exe, в переменную% path% ( System или User )
  • Если вы хотите иметь возможность запустить его в диалоговом окне «Выполнить» (Win + R) или в любом приложении, которое вызывает ShellExecute , достаточно добавить свой exe-файл в ключ пути приложения (это менее подвержено ошибкам во время установки / удаления, а также не загромождает до переменной пути)
Андерс
источник
3

Вы также можете навсегда (после перезагрузки) добавить переменную Path следующим образом:

Щелкните правой кнопкой мыши Мой компьютер -> Нажмите Свойства -> Нажмите Дополнительные параметры системы -> Нажмите Переменные среды

Ссылка: Изменить системные / пользовательские переменные

JoePC
источник
2

Поместите его в каталог c: \ windows или добавьте свой каталог к ​​«пути» в настройках среды (Windows-Break - вкладка «Дополнительно»)

С уважением, // т

Teson
источник
Вместо размещения пользовательских исполняемых файлов C:\Windowsлучше добавить пользовательский каталог в PATHпеременную окружения.
Роланд Иллиг
Это зависит. Putty.exe ставлю в / windows.
Teson
1

Используйте пакетный файл из 1 строки в вашей установке:

SETX PATH "C:\Windows"

запустить файл bat

Теперь поместите ваш .exe в c: \ windows, и все готово.

Вы можете ввести exename в командной строке, и он запустится.

Stavm
источник
2
Вместо размещения пользовательских исполняемых файлов C:\Windowsлучше добавить пользовательский каталог в PATHпеременную окружения.
Роланд Иллиг
1

Простые Bash-подобные псевдонимы в Windows

Чтобы получить глобальные псевдонимы bash-like в Windows для приложений, не добавляемых в путь автоматически, без добавления каждого из них в путь вручную, вот самое чистое решение, которое я придумала, которое вносит наименьшее количество изменений в систему и имеет наибольшее количество изменений. гибкость для последующей настройки:

«Установить» путь к псевдонимам

mkdir c:\aliases
setx PATH "c:\aliases;%PATH%"

Добавьте свой псевдоним

Открыть в новом окне оболочки

Для начала C:\path to\my program.exe, передав все аргументы, открыв его в новом окне, создайте c:\aliases\my program.batфайл со следующим содержимым ( подробности о команде запуска см. В разделе Команда запуска NT):

@echo off
start "myprogram" /D "C:\path to\" /W "myprogram.exe" %*

Выполнить в текущем окне оболочки

Для начала C:\path to\my program.exe, передав все аргументы, но запустив его в том же окне (больше похоже на то, как работает bash), создайте c:\aliases\my program.batфайл со следующим содержимым:

@echo off
pushd "C:\path to\"
"my program.exe" %*
popd

Выполнить в текущем окне оболочки 2

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

cd c:\aliases\
mklink "my program.exe" "c:\path to\my program.exe"
Эразм
источник
0

Добавьте в PATH, шаги ниже (Windows 10):

  1. Введите в строке поиска «environment ...» и выберите «Изменить системные переменные среды», которая открывает окно «Свойства системы».
  2. Нажмите кнопку Переменные среды ...
  3. На вкладке Переменные среды дважды щелкните переменную Path в разделе Системные переменные
  4. Добавьте путь к папке, содержащей EXE-файл, в Путь, дважды щелкнув по пустой строке и вставив путь.
  5. Нажмите ОК и выйдите. Откройте новое приглашение cmd и нажмите команду из любой папки, и она должна работать.
Акаш Йеллаппа
источник
0

Другим способом может быть добавление .LNKк вашему $ PATHEX. Затем просто создайте ярлык для вашего исполняемого файла (т.е. yourshortcut.lnk) и поместите его в любой из каталогов, перечисленных в $ PATH.

ПРЕДУПРЕЖДЕНИЕ ПРИМЕЧАНИЕ: знайте, что любые файлы .lnk, расположенные в любых каталогах, перечисленных в вашем $ PATH, теперь тоже «PATH». По этой причине я бы предпочел метод пакетного файла, упомянутый ранее для этого метода.

Hept0p
источник
-1

Если кто-то ищет это после меня, вот очень простой способ добавить свой Путь.

Отправьте путь к файлу, как показано на рисунке, скопируйте и вставьте его из файла и добавьте конкретный путь в конце с предыдущей точкой с запятой в новый путь. Может потребоваться адаптация до Windows 7, но, по крайней мере, это легкая отправная точка.

Изображение командной строки для экспорта PATH в текстовый файл

Kevin
источник
Основная часть ответа должна быть в тексте, а не на внешнем скриншоте.
Роланд Иллиг
-3

Лучший способ сделать это - просто установить файл .EXE в папку windows / system32. Таким образом, вы можете запустить его из любого места. Это то же самое место, где можно найти пинг с расширением .exe.

Мэтью
источник
Вместо размещения пользовательских исполняемых файлов C:\Windowsлучше добавить пользовательский каталог в PATHпеременную окружения.
Роланд Иллиг