Як відкрити програму за допомогою командного рядка в Windows 8?


17

Припустимо, у мене є програма з назвою, any_program.exeі мій привід операційної системи C:. Місцезнаходження програми -D:\Any_Folder\any_program.exe

Як запустити / виконати цю програму за допомогою командного рядка в Windows 8?

Я спробував командний рядок START any_program.exe, але він показує мені помилку, що

Windows не може знайти "any_program.exe". Переконайтесь, що ви правильно ввели ім’я та повторіть спробу.

До речі, він прекрасно працював у Windows 7. І якщо я набираю START notepad.exeабо START firefox.exe(Firefox не встановлений на C: диск), він працює в Windows 8.


Це насправді не має нічого спільного зокрема з Windows 8 , чи не так?
Джої

Я здогадуюсь. У Windows 7 працював би лише шлях. Але в Windows 8 шлях програми повинен знаходитися між лапками (те, що я дізнався), або він показує помилку, що він не міг знайти програму (якщо шлях не зареєстрований у змінній середовища PATH або в Реєстр додатків).
Ахмадул Хок

2
@AhmadulHoq Windows 7 поводиться точно так само, наскільки я знаю. Напевно, ви мали файл в одному з цих місць.
Боб

Відповіді:


22

Є три основні способи запустити команду в командному рядку.

  • вбудовані ( "внутрішні команди" )

    Це команди, вбудовані в сам cmd, і не вимагають виклику зовнішньої програми. Вони також не виконують жодного пошуку, і завжди будуть виконані з найвищим пріоритетом, якщо вони будуть відповідні. Ви можете обійти вбудовані файли, загорнувши ім'я виконавця в лапки: echoвикликає вбудований, але "echo"шукає наступні правила cmd.

  • Пряме виклик

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

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

    (дякую dxiv за коментарі)

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

    Коли ви намагаєтеся виконати файл за допомогою startкоманди, командна строка не виконує жодного пошуку. Натомість він передає ім'я файлу (та аргументи) самому Windows (через ShellExecuteExвиклик API), який потім повинен шукати місцезнаходження файлу. Є кілька місць, які він шукає у такому порядку:

    • Поточний робочий каталог
    • Каталог Windows
    • Каталог Windows \ System32
    • Каталоги, перелічені в змінній середовища PATH
    • Реєстр визначає шляхи додатків

    Зауважте, що діалогове вікно «Запуск» також використовує цей спосіб пошуку.


Зазвичай ви можете або перейти до місця розташування файлу за допомогою 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 (який використовує пряме виконання) конкретно згадує, що шляхи додатків не шукаються.
dxiv

@dxiv Дякую Виявляється пряме виклик через cmd, лише шукає каталоги cwd та PATH, перелічені у списку. Невдовзі внесення змін.
Боб

1
Дякую, це було швидко за три роки затримки коментаря ;-) Відповідні документи-посилання - msdn.microsoft.com/en-us/library/windows/desktop/ms682425.aspx, але я не мав місця включити його у попередньому коментарі. Логіка пошуку вказана в № 1-6 під lpCommandLine.
dxiv

1
@dxiv Дякую за посилання. Я також відредагував це в, хоча воно, схоже, не відповідає моїй спостережуваній поведінці ... (спробуйте: set path=слідом за ним cmdне можна знайти його, але start cmdпрацює, оскільки він все ще шукає шляхи поза env var).
Боб

1
Дякуємо за подвійну перевірку. Дійсно, що пряме виконання cmd не здійснює пошук за замовчуванням вікон / системних каталогів, і я неправильно вказав на документи CreateProcess. Здається, що cmd має власну логіку, відповідно до розділу "Командна послідовність пошуку" у розділі 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аналозі.


5

У вас є два варіанти:

  1. Додайте програму до %PATH%змінної
  2. Використовуйте лапки у ярлику

Детальніше:

Додавання any_program.exeдо шляху:

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

  3. Клацніть на "Змінні середовища" Додайте папку, в якій перебуває any_program.exe. Відредагуйте змінну PATH і в кінці додайте папку, розділену a;
    змінна шлях

  4. Тепер ви можете використовувати any_program.exe у діалоговому вікні запуску (Спробуйте вийти із системи та повернутися назад, щоб переконатися, що зміни змінної вашої траси використовуються.)

Використовуючи повний шлях

Замість використання any_program.exeв діалоговому вікні «Виконати» вам потрібно використовувати повний PATH. Тому наберіть D:\Stuff\App\any_program.exeзамість цього діалогове вікно запуску.


ці скріншоти WAAAY до великих. Ви можете мати їх у розумних розмірах?
Подорожник Geek

Робота над цим ...
Немо

Каталоги шляху в Windows розмежовані крапками з комою ( ;), а не колонами ( :) ...
Боб

Я мав це на увазі, але все-таки неправильно набрав це.
Немо

Знімки екрана, зроблені з c-sharpcorner.com/UploadFile/6cde20/… мабуть. Скриншоти там жахливі
Journeyman Geek

1
  1. Відкрити командний рядок
  2. Введіть назву програми, яку потрібно запустити. Якщо його на змінній PATH System, воно буде виконано. Якщо ні, вам доведеться ввести повний шлях до програми. Наприклад, для запуску D: \ Any_Folder \ any_program.exe введіть D: \ Any_Folder \ any_program.exe у командному рядку та натиснітьEnter

Ха-ха приємний трюк!
Ахмадул Хок

1

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


0

Я думаю, вам доведеться додати шлях до змінної PATH в системних змінних


0

Для цього використовуйте CMD замість GUI.

  1. Надання доступного розташування файлів у CMD, тобто створення PATHзмінної:

    Наприклад:

    • Сценарій: Ви хочете відкрити Acrobat із CMD
    • SET PATH: Тип CMD

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

    Тип CMD:

    START ACROBAT
    

Це воно !!!
Я сподіваюся, що це було корисно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.