Как запустить exe файл с параметрами
Обновлено: 21.11.2024
В какой-то момент мы все загрузили и установили программное обеспечение на нашей платформе Windows. Как вы, возможно, знаете, файл, который вы загружаете из Интернета или с диска, имеет расширение .exe, которое показывает, что это исполняемый файл. Когда вы запускаете этот файл, он выполняет набор закодированных инструкций, которые система будет выполнять для установки программного обеспечения в вашей системе, чтобы вы могли начать его использовать.
Исполняемый файл может иметь сотни различных расширений, и «.exe» — лишь одно из них. С точки зрения удобства использования самый простой способ запустить файл .exe — дважды щелкнуть по нему и следовать инструкциям, которые он предлагает. Эти файлы также можно запускать с помощью стороннего программного обеспечения.
Знаете ли вы, что с помощью PowerShell можно запускать файлы .exe? Вы удивитесь, насколько легко это сделать.
В этой статье я покажу вам три разных способа запуска файлов .exe через PowerShell.
Непосредственный переход к файлу
Если вы знаете точное расположение исполняемого файла, просто перейдите к нему с помощью редактора PowerShell или обычной командной строки. Однако на некоторых компьютерах могут потребоваться права администратора для запуска файлов .exe, поэтому в этом случае вы можете переключиться на учетную запись администратора.
Получив права администратора, перейдите в папку или каталог, содержащий файл .exe.
Например, предположим, что у вас есть файл с именем «myprogram.exe», расположенный в папке C:/Users/admin/testfolder/experiments.
Чтобы запустить этот файл .exe, откройте PowerShell и используйте команду «cd»:
c:\Users\admin> cd testfolder
c:\Users\admin\ testfolder> cd эксперименты
Теперь вы находитесь в папке экспериментов.
Затем запустите myprogram.exe следующим образом:
C:\Users\admin\testfolder\experiments> .\myprogram.exe
Обратите внимание, что для запуска файлов .exe в PowerShell необходимо использовать «.\». В противном случае файл .exe не запустится, но и ошибок вы не получите. Заявление будет просто передано PowerShell.
Когда вы запускаете эту команду, файл .exe будет выполнен, и он может открыть мастер или лицензионное соглашение в соответствии с содержимым файла .exe. В зависимости от программы и способа ее программирования вам может понадобиться передать ей параметры.
Чтобы отправить параметры в файл .exe:
C:\Users\admin\testfolder\experiments> .\myprogram.exe 12
Здесь «12» — это ввод, который вы отправляете в файл .exe для обработки.
Точное имя файла неизвестно
Иногда вы можете не знать точное имя файла. Вот почему некоторые редакторы PowerShell отображают все файлы в папке, когда вы вводите «.\». Много раз он отображает все файлы в папке в виде раскрывающегося меню, и вы можете выбрать файл из него. .
Еще один вариант — использовать командлет Get-ChildItem. Это может быть особенно полезно в старых редакторах PowerShell. Просто перейдите в папку и введите «Get-ChildItem. Это отобразит имена всех файлов, время последней записи, режим доступа и другие детали. Вы можете просмотреть этот список и ввести имя исполняемого файла .exe.
C:\Users\admin\testfolder\experiments> Get-ChildItem
Использование Invoke-Expression
В приведенном выше варианте вы перешли в папку для запуска файла .exe. Но как это сделать через скрипт?
Использование командлета Invoke-Expression.
Эта команда используется для запуска команд и выражений на локальном устройстве. Его синтаксис:
Вы можете запустить файл «myprogram.exe», упомянутый в приведенном выше примере, следующим образом:
Invoke-Expression -Command "C:\Users\admin\ testfolder\experiments\myprogram.exe"
Еще один способ выразить приведенную выше команду:
“ C:\Users\admin\testfolder\experiments\myprogram.exe ” | Вызов-выражение
Обе команды имеют одинаковый результат и являются просто разными формами выражения.
Обратите внимание, что для некоторых исполняемых файлов могут потребоваться параметры, и в этом случае используйте переменную $Input параметра «command» для передачи значений в Invoke-Expression. Точно так же вы можете использовать его вывод через параметр «command».
Таким образом, вы можете использовать командлет Invoke-Expression для запуска файлов .exe в PowerShell.
Командлет Start-Process
Следующий способ запуска файлов .exe в PowerShell – использование командлета Start-Process.
Этот командлет запускает один или несколько процессов на вашем локальном устройстве.
Вот как выглядит командлет Start-Process:
Для запуска файлов .exe в PowerShell требуется только параметр -FilePath. В приведенном выше примере просто перейдите в папку «testfolder/experiments» и введите:
Start-Process -FilePath «myprogram.exe»
Это запустит исполняемый файл.Если вы находитесь в другом каталоге, используйте параметр «-WorkingDirectory», чтобы указать PowerShell перейти к «testfolder/experiments» и запустить в нем файл «myprogram.exe».
Код будет выглядеть следующим образом:
Start-Process -FilePath "myprogram.exe" -WorkingDirectory "C:\Users\admin\testfolder\experiments"
Таким образом, вы можете использовать командлет Start-Process для запуска файлов .exe в PowerShell.
Вы можете выбрать один из трех вышеперечисленных методов, и результаты совсем не изменятся. Выбор больше зависит от ваших предпочтений и от того, где вы выполняете файл. Например, если вы хотите запускать файлы .exe как часть кода более крупной программы, используйте командлет Start-Process или Invoke-Expression, поскольку его можно внедрить в виде кода.
С другой стороны, если вы хотите запускать файлы .exe из редактора PowerShell или из командной строки, выберите первый вариант.
Заключение
Итак, PowerShell автоматизирует многие задачи, которые вы выполняете вручную на платформе Windows, и одной из таких задач является запуск исполняемых файлов.
Вы можете запускать файлы .exe в PowerShell тремя различными способами:
- Введите «.\», а затем имя файла.
- Использование Invoke-Expression
- Использование командлета Start-Process
Хотя окончательный результат не изменится, вы можете выбрать метод в соответствии со своими техническими навыками и требованиями к кодированию.
Мы надеемся, что это поможет вам с легкостью запускать файлы .exe в PowerShell. Обязательно прочитайте наши руководства по PowerShell.
Есть ли простой способ запустить приложение из проводника Windows с аргументами? Или мне действительно нужно запускать их из командной строки?
Вы ограничены командной строкой или запуском из Проводника? Будет ли работать простой пакетный файл или ярлык?
3 ответа 3
Если вы откроете любую папку, то самый короткий способ запустить любое приложение с аргументами — это просто ввести имя программы и аргументы в верхнем текстовом поле.
В противном случае, если ваша программа находится на рабочем столе, вы можете использовать различные способы, такие как:
- Нажмите на любую папку на рабочем столе, на один уровень выше, и сделайте то же самое, что показано на картинке.
- Нажмите Win+R , напишите cmd.exe /k cd desktop , нажмите Enter, напишите имя программы и аргументы.
- Создайте ярлык или пакетный файл с помощью этой команды:
cmd.exe /k cd %systemdrive%\%username%\desktop
запустите его и напишите имя программы и аргументы.
Похоже, вам нужен краткий скрипт, который можно просто дважды щелкнуть, чтобы запустить команду с определенными аргументами. Это верно? Если это так, вот один из способов:
Откройте простой текстовый редактор, например Блокнот, и введите команды с нужными аргументами, например:
(В этом примере putty.exe — это программа, которая может принимать IP-адреса в качестве аргументов и сохраняется в C:\Users\\useful-files\executables.) Когда вы закончите, сохраните ее с расширением . bat (если вы используете Блокнот, просто убедитесь, что вы заменили .txt, с которого он вас запускает; в нашем примере мы могли бы сохранить его как что-то вроде run-putty-with-IP.bat ).
Если вы сделали это правильно, в Проводнике файлов тип файла будет отображаться как "Пакетный файл Windows", и двойной щелчок по нему запустит его содержимое.
Обратите внимание, что некоторые программы, без настройки системных переменных или переменных среды, потребуют от вас перехода в их каталог, чтобы иметь возможность выполнять их, поэтому команда cd включена здесь.
Этот форум перенесен в раздел вопросов и ответов Майкрософт. Посетите Microsoft Q&A, чтобы публиковать новые вопросы.
Отвечает:
Вопрос
Например, ABC.exe может принимать несколько параметров. Обязательными являются Имя пользователя, Пароль, Порт. Я пытаюсь запустить это с помощью System.Diagnostics. Пожалуйста, покажите мне синтаксис с именами параметров. Таким образом, в этом случае минимумом являются 3 параметра. Пожалуйста помоги. У меня есть поиск во всей сети без везения. спасибо
Ответы
Когда мы используем Process.Start для запуска исполняемого файла, нам нужно использовать команду /k или /c перед командой, как показано ниже.
ABC.exe звучит как программа, которую вы написали сами, поэтому, если этот код все еще не работает, не могли бы вы показать нам метод приема параметров (обычно метод Main) ABC.exe, чтобы мы могли на самом деле протестировать это вместо предположения?
Все ответы
Я думаю, вам следует искать "аргументы командной строки". Это параметры основного метода вашего исполняемого файла.
Вот пример ссылки.
- Предложено в качестве ответа Тимоном Янгом, сотрудник контингента Майкрософт, понедельник, 6 января 2020 г., 6:53
Что вы подразумеваете под "покажите мне синтаксис с именами параметров"?
Как узнать правильный синтаксис параметров программы ABC.EXE?
Если вы хотите запустить программу ABC.exe из своей собственной программы
и передать аргументы в ABC, то проще всего использовать Process.Start:
Если аргументы могут содержать пробелы, их обычно необходимо
заключать в кавычки.
Если вы попробовали это и у вас возникли проблемы с этим, покажите, что вы пробовали,
и покажите, что получилось.
Попробуйте присвоить строковое выражение локальной переменной и проверьте эту переменную непосредственно перед вызовом RUN(.)
Попробуйте ввести эту строку в качестве команды в новой командной строке. Таким образом, вы вручную имитируете то, что делает команда RUN. Вот так:
После этого фрагмента кода вы можете вставить текст ls_command из буфера обмена в новую командную строку.
Спасибо, Майкл Крамер. Я слишком глубоко заглянул в commandParm, а ответ был простым аргументом командной строки.
Доброе утро, Насир,
Некоторые вопросы:
- Что устанавливает %destination% в пакетном файле?
- Когда пакетный файл вызывается, как узнать, где находится текущий каталог?
- "Parm1" литерал в пакетном файле или он должен исходить из командной строки при вызове пакетного файла?
@echo off
setlocal
если пункт назначения не определен, установите пункт назначения=.
start ""%destination%\abc.exe" %*
endlocal
Setlocal не позволяет изменениям в пакетной среде влиять на что-либо за пределами пакетного файла (например, перезаписывая предустановленные переменные среды).
Если переменная среды назначения не задана, временно установите для нее текущий каталог ".". Exe будет запускаться из любого каталога, который является «текущим» при запуске пакетного файла.
%* означает "включить всю командную строку дословно". Это означает, что вам не нужно будет изменять пакетный файл, если вы добавите в приложение какие-либо новые аргументы.
Endlocal здесь не обязателен, но возврат всего в "нормальное" состояние во время запуска пакета является хорошим тоном.
Destination и Parm1 – это жестко заданные значения, которые задаются в пакетном файле. пункт назначения указывает на нужный каталог, а Parm1 является строковым значением "QA".
Пакетный файл работает нормально для открытия исполняемого файла, но новое требование по добавлению параметра не отправляет какие-либо параметры в исполняемый файл. Для простоты скажем, что команда
запустить "" "C:\TEST\abc.exe" "Parm1"
Насколько я понимаю, литерал Parm1 должен передаваться в abc.exe, но он не передается. Решение, которое вы предлагаете включить %*, хорошо подходит для следующего уровня, но мой базовый сценарий отправки простого значения «Parm1» терпит неудачу.
Я пробовал запускать приложение таким образом, и у меня не было проблем. В него правильно передана командная строка.
Я бы предложил создать небольшое приложение PB, которое отображает командную строку в том виде, в котором она была отправлена (должно быть достаточно окна сообщения в событии открытия приложения), чтобы временно заменить abc.exe, чтобы вы могли точно узнать, что такое пакетный файл. делаю.
Является ли необходимость использования пакетного файла абсолютно необходимой? Как указал Майкл, вы можете сделать то же самое с функцией «Выполнить», а также доступен NVO «Выполнить и ждать» (хотя я не могу вспомнить, на каком сайте он был).
Функция «Выполнить» является асинхронной, она запускает другое приложение и немедленно завершает работу, не дожидаясь завершения. NVO n_runandwait был создан для создания приложения и ожидания его выполнения перед продолжением.
Мне нужно удаленно запустить исполняемый файл с аргументами, используя "/", например "C:\Program Files\xxxx.exe" /sso /run "App - Name" . Я пробовал, но пока не нашел способа.
Популярные темы в PowerShell
10 ответов
Точно
- отметить 1209 лучших ответов
- thumb_up 2697 благодарных голосов
Эти переключатели обычно специфичны для исполняемого файла. Можете ли вы поделиться, что это за исполняемый файл или что вы пробовали? Вы изучали эхоарги? Например,
$Command = "E:\X64\Xendesktop Setup\XenDesktopServerSetup.exe" $Parms = "/COMPONENTS CONTROLLER,DESKTOPSTUDIO,DESKTOPDIRECTOR,LICENSESERVER,STOREFRONT /PASSIVE /NOREBOOT /CONFIGURE_FIREWALL /NOSQL" $Prms = $Parms.Split ( )
Спасибо за быстрый ответ. Да, я пробовал что-то вроде того, что вы отправили, но мне нужно поместить в ту же строку аргументы, такие как /Arg1 /Arg2, и другой, например /run «XXX - XXXX», но в этом случае у меня есть пробел между словами. Я не нашел решение . :(
Дополнительная информация, которая мне нужна
"C:\Program Files\Blue Prism Limited\Blue Prism Automate\AutomateC.exe" /sso /run "Triagem - TV DTH"
ДжитэнШ
- отметить 474 лучших ответа
- thumb_up: 738 благодарных отзывов
Я очень ценю это. Попробую протестировать сегодня утром. Берегите себя..
Здравствуйте, извините .. Я получил ошибку, и это то же самое, что я пытался исправить раньше :(
Точно
- отметить 1209 лучших ответов
- thumb_up 2697 благодарных голосов
Я имею в виду, вы вводите этот дефис, вы считаете, что это допустимый параметр?
Вызовите исполняемый файл следующим образом
И посмотрите, сообщает ли он вам, какие у него параметры
Да, это правильный параметр, я использую его с CMD, мне нужно поставить /sso, потому что мое приложение использует AD для аутентификации, тогда мне нужно поставить /run для запуска моего имени процесса, и почти имя имеет пробел. Думаю, у меня нет решения с использованием powershell, потому что я перепробовал много параметров и аргументов.
Спасибо за большую помощь
Франшишагъярд2
- отметить 195 лучших ответов
- thumb_up: 345 благодарных отзывов
Попробуйте поменять местами одинарные и двойные кавычки? Заметил, что в исходном примере вы использовали двойные кавычки, поэтому задались вопросом, не интерпретирует ли ваш exe использование одинарных кавычек так же, как двойные кавычки
Здравствуйте, спасибо, но у моего приложения есть ограничение, потому что удаленно это невозможно сделать в любом случае. Я очень ценю.
Эта тема заблокирована администратором и больше не открыта для комментариев.
Чтобы продолжить это обсуждение, задайте новый вопрос.
Щелкни! Chrome Zero-Day, Каталог CISA, Kaspersky, Sun Images, Обычный текст в Интернете
Ваша ежедневная доза технических новостей. Вы должны это услышать. Экстренное обновление Google Chrome исправляет уязвимость нулевого дня, используемую в атаках В Chrome обнаружена еще одна уязвимость нулевого дня, поэтому пришло время установить исправление. По данным BleepingComputer: .
Искра! Серия Pro — 28 марта 2022 г.
Прекрасный понедельник! С возвращением на работу и с возвращением в Spark! Я надеюсь, что ваш день превратится во все, что может быть! В любом случае, сделайте селфи и опубликуйте его ниже. Просто напоминание, если вы читаете.
Странные маршруты в таблице маршрутизации
Привет, ребята! Итак, у меня есть вопрос относительно некоторых действительно странных маршрутов в моей таблице маршрутизации.Недавно я перевел свой маршрутизатор Huawei B818 4G в режим моста за pfSense, который теперь является моим основным маршрутизатором. При этом я замечаю эти статические записи, которые появляются и.
Сколько ИБП у вас дома?
Я просто осматривал батареи (на предмет вздутия и уменьшения времени работы) и решил, что пришло время спросить: Сколько у вас дома? Я использую все APC, потому что так уж получилось 😂: 1500 ВА в подвале 2. - разместить стойку Chatsworth 650 в моем домашнем офисе 600 в w.
Что бы вы сделали?
Итак, я работаю в MSP, который работает круглосуточно и без выходных. Старший инженер в нежелательную смену с 23:00 до 8:00 уходит. Теперь у меня есть возможность перейти на эту должность, насколько больше это потребует компенсации в процентах от того, что я зарабатываю сейчас? и я скажу это.
Читайте также: