Как открыть программу через командную строку в Windows 8?

17

Предположим , у меня есть программа под названием any_program.exeи моя операционная система привода C:. Расположение программыD:\Any_Folder\any_program.exe

Как запустить / выполнить эту программу с помощью командной строки в Windows 8?

Я попробовал командную строку START any_program.exe, но он показывает мне ошибку , что

Не удается найти «any_program.exe». Убедитесь, что вы правильно ввели имя, а затем повторите попытку.

Кстати, она прекрасно работала в Windows 7. И, если я типа START notepad.exeилиSTART firefox.exe (Firefox не установлен в C: диск), она работает в Windows 8.

Ахмадул Хок
источник
Это на самом деле не имеет ничего общего с Windows , 8 , в частности, не так ли?
Joey
Я думаю, это так. В Windows 7, только путь работал бы. Но в Windows 8 путь к программе должен быть в кавычках (что я обнаружил), или он показывает ошибку, что не может найти программу (если путь не зарегистрирован в переменной окружения PATH или в App реестра).
Ahmadul Hoq
2
@AhmadulHoq Windows 7 действительно ведет себя точно таким же образом, насколько я знаю. Вы , вероятно, файл в одном из этих мест.
Боб

Ответы:

24

Есть три основных способа для запуска «команды» в командной строке.

  • (встроенные функции «внутренние команды» )

    Эти команды встроены в сам cmd и не требуют внешнего вызова программы. Кроме того, они не выполняют каких - либо поиска, и всегда будет выполняться с наивысшим приоритетом , если совпадают. Вы можете обойти встроенные команды, окружив имя исполняемого файла в кавычки: echoвызывает встроенную команду, но"echo" будет выполнять поиск по следующим правилам cmd.

  • Прямой вызов

    Это когда вы непосредственно указать название программы (без пути). Например, если вы используете cmd( cmd.exe) или ipconfig( ipconfig.exe) в командной строке, вы прямой вызов внешней команды. Это выполняет ограниченный поиск реализован полностью в командной строке в следующем порядке:

    • Текущий каталог.
    • Каталоги, перечисленные в переменной среды PATH.

    (спасибо dxiv за комментарии)

  • Через startкоманду

    При попытке выполнить файл через startкоманду, командная строка не выполняет поиск. Вместо этого, он передает имя файла (и аргументы) над самой Windows (через ShellExecuteExAPI вызова), которые затем должны искать местоположение файла. Есть несколько мест , он ищет в следующем порядке:

    • Текущий рабочий каталог
    • Каталог Windows
    • каталог Windows \ System32
    • Каталоги, перечисленные в переменной окружения PATH
    • Реестр определен App Paths

    Обратите внимание, что диалоговое окно Run также использует этот метод поиска.


Как правило, вы можете либо перейдите к местоположению файла с cd /d D:\Any_Folder( /dприводным средством изменения) и просто запустить any_program.exe. Кроме того, вы можете указать полный путьD:\Any_Folder\any_program.exe .

Если вы хотите , чтобы запустить его с start any_program.exe, у вас есть несколько вариантов:

  • Вы можете поместить его в каталоги Windows или System32 или в любой каталог в переменной среды PATH.
  • Вы можете добавить каталог он находится в ( D:\Any_Folder) к переменной окружения PATH, см этот вопрос подробнее.
  • Вы можете добавить его в раздел реестра App Paths, в Notepad и Firefox делает. Путь к приложению связывает ключевое слово файла (например, firefox.exe) с полным путем к файлу, в отличие от других опций, связанных с каталогами. Смотрите здесь для получения дополнительной информации.
боб
источник
3
Для полноты картины , следует отметить , что запуск программы в командной строке непосредственно , как any_program.exeне искать ключ App Paths, во время работы как start any_program.exeделает , например , по умолчанию Win7 установки, введя wordpadв командной строке дает not recognizedошибку, в то время как start wordpadуспешно запускает WordPad ( на основе его ключа пути к приложению). Техническая причина заключается в том , что связанная страница ссылается на ShellExecuteEx (который startиспользует) в то время как CreateProcess (который использует непосредственное выполнение) специально упоминает , что App Paths не найден.
dxiv
@dxiv Спасибо. Оказывается, прямой вызов через ЦМД только ищет УХО и PATH перечисленных каталогов. Я скоро исправлю.
Боб
1
Спасибо, что быстро в течение 3- х лет в конце комментария ;-) Соответствующие документы-ссылка msdn.microsoft.com/en-us/library/windows/desktop/ms682425.aspx , но у меня не было места , чтобы включить его в предыдущем комментарии. Логика поиска приведена в № 1-6 под lpCommandLine.
DXIV
1
@dxiv Спасибо за ссылку. Я также редактировал , что, хотя это , кажется, не соответствует моему наблюдаемому поведению ... (попробуйте: set path=после чего cmdне могу найти его, но start cmdработает , как его еще поиски пути вне окр вара).
Боб
1
Спасибо за doublechecking. Это действительно так , что CMD непосредственное выполнение не ищет окна / системные каталоги по умолчанию, и я был не прав , чтобы указать на CreateProcess документы. Кажется , что CMD имеет свою собственную логику, в разделе «Команда Поиск Sequence» под technet.microsoft.com/en-us/library/... датируемые по крайней мере раз NT, и , скорее всего , навсегда прежде.
dxiv
7
start D:\Any_Folder\any_program.exe

или когда путь или файл содержит пробелы

start "" "D:\Any_Folder\any_program.exe"

start any_program.exeработает только для тех программ, которые находятся в %PATH%переменной окружения или зарегистрированы в реестре в ключе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Pathsили его HKEY_CURRENT_USERаналоге.

Maximus
источник
5

У вас есть два варианта:

  1. Добавить программу в %PATH%переменную
  2. Используйте кавычки ярлыка

Деталь:

Добавление any_program.exeв пути:

  1. Перейдите в «Панель управления» -> «Дополнительные параметры системы»
    Расширенные системные настройки
  2. Перейти на вкладку «Дополнительно»
    Настройки системы

  3. Нажмите на кнопку «Переменные среды» Добавить папку, в которой any_program.exe проживает. Отредактируйте переменную PATH и добавьте папку в конце, разделив ее;
    переменный путь

  4. Теперь вы можете использовать any_program.exe в диалоговом окне Выполнить (Попробуйте выйти и снова, чтобы убедиться, что используются ваши изменения переменных пути.)

Используя полный путь

Вместо того , чтобы использовать any_program.exeв диалоговом окне Run, вы должны использовать полный путь. Так введите D:\Stuff\App\any_program.exeв диалоговом окне запуска вместо этого.

Nemo
источник
эти скриншоты WAAAY к большому. Разум имея их в разумных размерах?
подмастерье - мастер
Работая над ней ...
Nemo
Каталоги путей в Windows разделяются точками с запятой ( ;), а не двоеточиями ( :) ...
Боб,
У меня было , что у меня в голове, но все - таки неправильно ввели его.
Nemo
Скриншоты взяты из c-sharpcorner.com/UploadFile/6cde20/... , по- видимому. На скриншотах есть страшные
подмастерье - мастер
1
  1. Открыть командную строку
  2. Введите имя программы , которую вы хотите запустить. Если его на PATH переменной системы она будет выполнена. Если нет, то вы должны ввести полный путь к программе. Например, чтобы запустить D: \ Any_Folder \ any_program.exe, введите D: \ Any_Folder \ any_program.exe в командной строке и нажмитеEnter
Ракиб Ансары
источник
Ха - ха хороший трюк!
Ahmadul Hoq
1

Я использую еще простой метод. , ,
Скопируйте ярлык файла в C: \ Users \ имя , а затем введите имя ярлыка в диалоговом окне Выполнить. , , , ,

prad_
источник
0

Я думаю, вы должны добавить путь к переменной PATH в системных переменных

pratnala
источник
0

Используйте CMD, чтобы сделать это вместо GUI.

  1. Создание исполняемого файла Расположение Доступен В CMD т.е. Создание PATHпеременной:

    Например:

    • Сценарий: Вы хотите открыть Acrobat Из ЦМД
    • SET PATH: В CMD Тип

      SET ACROBAT="C:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat"
      
  2. Выполнение файла из CMD:

    В CMD Тип:

    START ACROBAT
    

Это оно !!!
Я надеюсь, что это было полезно.

DnyanDeep Taur
источник