Как запустить exe через bat minimized
Перейти к содержимому

Как запустить exe через bat minimized

  • автор:

Как запустить скрыто .exe файл через батник?

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

  • Вопрос задан более трёх лет назад
  • 486 просмотров

Комментировать

Решения вопроса 0

Ответы на вопрос 1

AlexXYZ

O Keep Clear O

Ответ написан более трёх лет назад

Комментировать

Нравится Комментировать

Ваш ответ на вопрос

Войдите, чтобы написать ответ

программирование

  • Программирование
  • +1 ещё

Как исправить ошибку в rc файле: «RC2135 file not found» C++?

  • 1 подписчик
  • 13 часов назад
  • 31 просмотр

Start-Process

Запускает один или несколько процессов на локальном компьютере.

Синтаксис

Start-Process [-FilePath] [[-ArgumentList] ] [-Credential ] [-WorkingDirectory ] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError ] [-RedirectStandardInput ] [-RedirectStandardOutput ] [-WindowStyle ] [-Wait] [-UseNewEnvironment] [-Environment ] [-WhatIf] [-Confirm] []
Start-Process [-FilePath] [[-ArgumentList] ] [-WorkingDirectory ] [-PassThru] [-Verb ] [-WindowStyle ] [-Wait] [-Environment ] [-WhatIf] [-Confirm] []

Описание

Командлет Start-Process запускает один или несколько процессов на локальном компьютере. По умолчанию Start-Process создается новый процесс, наследующий все переменные среды, определенные в текущем процессе.

Чтобы указать программу, которая выполняется в процессе, введите исполняемый файл или файл скрипта или файл, который можно открыть с помощью программы на компьютере. Если указать файл, отличный от исполняемого файла, Start-Process запускает программу, связанную с файлом, аналогично командлету Invoke-Item .

Параметры можно использовать для указания параметров Start-Process , таких как загрузка профиля пользователя, запуск процесса в новом окне или использование альтернативных учетных данных.

Примеры

Пример 1. Запуск процесса, использующего значения по умолчанию

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

Start-Process -FilePath "sort.exe"

Пример 2. Печать текстового файла

В этом примере запускается процесс печати C:\PS-Test\MyFile.txt файла.

Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print

Пример 3. Запуск процесса сортировки элементов в новый файл

В этом примере запускается процесс, который сортирует элементы в TestSort.txt файле и возвращает отсортированные элементы в файлах Sorted.txt . Все ошибки записываются в SortError.txt файл. Параметр UseNewEnvironment указывает, что процесс выполняется с собственными переменными среды.

$processOptions = @ < FilePath = "sort.exe" RedirectStandardInput = "TestSort.txt" RedirectStandardOutput = "Sorted.txt" RedirectStandardError = "SortError.txt" UseNewEnvironment = $true >Start-Process @processOptions

В этом примере используется splatting для передачи параметров командлету. Дополнительные сведения см. в about_Splatting .

Пример 4. Запуск процесса в развернутом окне

В этом примере запускается Notepad.exe процесс. Окно разворачивается во весь экран и удерживается до завершения процесса.

Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized

Пример 5. Запуск PowerShell от имени администратора

В этом примере powerShell запускается с помощью параметра «Запуск от имени администратора «.

Start-Process -FilePath "powershell" -Verb RunAs

Пример 6. Использование различных команд для запуска процесса

В этом примере показано, как найти команды, которые можно использовать при запуске процесса. Доступные команды определяются расширением имени файла, который выполняется в процессе.

$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe $startExe.verbs open runas runasuser

В примере используется New-Object для создания объекта System.Diagnostics.ProcessStartInfo для powershell.exe файла, который выполняется в процессе PowerShell. Свойство Verbs объекта ProcessStartInfo показывает, что можно использовать open и RunAs verbs with powershell.exe , или с любым процессом, выполняющим .exe файл.

Пример 7. Указание аргументов для процесса

Обе команды запускают интерпретатор команд Windows, выдавая dir команду в папке Program Files . Так как это имя папки содержит пробел, значение должно быть окружено экранируемыми кавычками. Обратите внимание, что первая команда указывает строку в качестве ArgumentList. Вторая команда — это массив строк.

Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`"" Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""

Пример 8. Создание отсоединяемого процесса в Linux

В Windows Start-Process создается независимый процесс, который продолжает работать независимо от запуска оболочки. На платформах, отличных от Windows, только что запущенный процесс присоединяется к оболочке, которая запущена. Если оболочка запуска закрыта, дочерний процесс завершается.

Чтобы избежать прекращения дочернего процесса на платформах Unix, можно объединить с Start-Process nohup . В следующем примере запускается фоновый экземпляр PowerShell в Linux, который остается в живых даже после закрытия сеанса запуска. Команда nohup собирает выходные данные в файле nohup.out в текущем каталоге.

# Runs for 2 minutes and appends output to ./nohup.out Start-Process nohup 'pwsh -noprofile -c "1..120 | % < Write-Host . -NoNewline; sleep 1 >"'

В этом примере Start-Process выполняется команда Linux nohup , которая запускается pwsh как отсоединяемый процесс. Дополнительные сведения см. в статье nohup в Википедии.

Пример 9. Переопределение переменной среды для процесса

По умолчанию при использовании Start-Process новый процесс создается с теми же переменными среды, что и текущий сеанс. Параметр Environment можно использовать для переопределения значений этих переменных.

В этом примере переменная FOO среды добавляется в сеанс с foo значением.

В примере выполняется Start-Process три раза, возвращая значение FOO каждого раза. Первая команда не переопределяет переменную среды. Во второй команде FOO задано значение bar . В третьей команде FOO задано $null значение , которое удаляет его.

$env:FOO = 'foo' Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @ < FOO = 'bar' >Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @ < FOO = $null >foo bar

Параметры

-ArgumentList

Задает параметры или значения параметров, используемые при запуске этого командлета. Аргументы можно принимать в виде одной строки с аргументами, разделенными пробелами, или как массив строк, разделенных запятыми. Командлет объединяет массив в одну строку с каждым элементом массива, разделенным одним пробелом.

Внешние кавычки строк PowerShell не включаются, когда значения ArgumentList передаются в новый процесс. Если параметры или значения параметров содержат пробел или кавычки, они должны быть окружены экранируемыми двойными кавычками. Дополнительные сведения см. в about_Quoting_Rules .

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

Type: String [ ]
Aliases: Args
Position: 1
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Confirm

Запрос подтверждения перед выполнением командлета.

Type: SwitchParameter
Aliases: cf
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Credential

Указывает учетную запись пользователя с разрешением на выполнение этого действия. По умолчанию командлет использует учетные данные текущего пользователя.

Введите имя пользователя, например User01 или Domain01\User01, или введите объект PSCredential, созданный командлетом Get-Credential . Если ввести имя пользователя, вам будет предложено ввести пароль.

Учетные данные хранятся в объекте PSCredential , а пароль хранится как SecureString.

Дополнительные сведения о защите данных SecureString см. в разделе «Как безопасна Защита SecureString?».

Type: PSCredential
Aliases: RunAs
Position: Named
Default value: Current user
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Environment

Указывает одну или несколько переменных среды для переопределения процесса в виде хэш-таблицы. Укажите имя переменной среды в качестве ключа в хэш-таблице и требуемое значение. Чтобы отменить настройку переменной среды, укажите его значение как $null .

Указанные переменные заменяются в процессе. При указании переменной PATH среды она заменена значением $PSHOME , за которым следует указанное значение из этого параметра. В Windows команда добавляет значения PATH в область компьютера и пользователя после нового значения.

Этот параметр добавлен в PowerShell 7.4.

Type: Hashtable
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-FilePath

Указывает необязательный путь и имя файла программы, которая выполняется в процессе. Введите имя исполняемого файла или документа, например .txt файла или .doc файла, связанного с программой на компьютере. Этот параметр является обязательным.

Если указать только имя файла, которое не соответствует системной команде, используйте параметр WorkingDirectory , чтобы указать путь.

Type: String
Aliases: PSPath, Path
Position: 0
Default value: None
Required: True
Accept pipeline input: False
Accept wildcard characters: False

-LoadUserProfile

Указывает, что этот командлет загружает профиль пользователя Windows, хранящийся в HKEY_USERS разделе реестра для текущего пользователя. Параметр не применяется к системам, отличным от Windows.

Этот параметр не влияет на профили PowerShell. Дополнительные сведения см. в разделе about_Profiles.

Type: SwitchParameter
Aliases: Lup
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-NoNewWindow

Предотвращает запуск процесса в новом окне. По умолчанию в Windows PowerShell открывается новое окно. В системах, отличных от Windows, вы никогда не получаете новое окно.

Параметры NoNewWindow и WindowStyle нельзя использовать в той же команде.

Параметр не применяется к системам, отличным от Windows.

Type: SwitchParameter
Aliases: nnw
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-PassThru

Возвращает объект процесса для каждого запущенного командлетом процесса По умолчанию этот командлет не создает выходные данные.

Type: SwitchParameter
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-RedirectStandardError

Указывает файл. Этот командлет отправляет все ошибки, созданные процессом, в указанный файл. Введите путь и имя файла. По умолчанию все ошибки отображаются в консоли.

Type: String
Aliases: RSE
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-RedirectStandardInput

Указывает файл. Этот командлет считывает входные данные из указанного файла. Введите путь и имя файла входного файла. По умолчанию процесс получает входные данные с клавиатуры.

Type: String
Aliases: RSI
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-RedirectStandardOutput

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

Type: String
Aliases: RSO
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-UseNewEnvironment

Указывает, что этот командлет использует новые переменные среды, указанные для процесса. По умолчанию запущенный процесс выполняется с переменными среды, унаследованными от родительского процесса.

В Windows при использовании UseNewEnvironment новый процесс начинается только с переменными среды по умолчанию, определенными для область компьютера. Это имеет побочный эффект, установленный $env:USERNAME для SYSTEM. Ни одна из переменных из область пользователя не включается.

Type: SwitchParameter
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Verb

Указывает команду, используемую при запуске этого командлета. Доступные команды определяются расширением имени файла, который выполняется в процессе.

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

Тип файла Команды
.cmd Edit , , Open Print , RunAs RunAsUser
.exe Open , , RunAs RunAsUser
.txt Open , , Print PrintTo
.Wav Open , Play

Чтобы найти команды, которые можно использовать с файлом, выполняющимся в процессе, используйте New-Object командлет для создания объекта System.Diagnostics.ProcessStartInfo для файла. Доступные команды находятся в свойстве Verbs объекта ProcessStartInfo. Дополнительные сведения см. в примерах.

Параметр не применяется к системам, отличным от Windows.

Type: String
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-Wait

Указывает, что этот командлет ожидает завершения указанного процесса и его потомков перед принятием дополнительных входных данных. Этот параметр подавляет командную строку или сохраняет окно до завершения процессов.

Type: SwitchParameter
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-WhatIf

Показывает, что произойдет при запуске командлета. Командлет не выполняется.

Этот параметр появился в PowerShell 6.0.

Type: SwitchParameter
Aliases: wi
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-WindowStyle

Указывает состояние окна, используемого для нового процесса. Значение по умолчанию — Normal . Допустимые значения для этого параметра:

Параметры WindowStyle и NoNewWindow нельзя использовать в той же команде.

Параметр не применяется к системам, отличным от Windows. При использовании в системах, отличных от Windows, вы никогда не получаете новое окно.

Type: ProcessWindowStyle
Accepted values: Normal, Hidden, Minimized, Maximized
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

-WorkingDirectory

Указывает расположение, в котором должен начинаться новый процесс.

Если этот командлет не указан, по умолчанию используется полное расположение, указанное в параметре FilePath . Если значение параметра FilePath не является полным, по умолчанию используется текущий рабочий каталог вызывающего процесса.

Wild карта s не поддерживаются. Путь не должен содержать символы, которые будут интерпретироваться как дикие карта.

Type: String
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False

Входные данные

None

Невозможно передать объекты в этот командлет.

Выходные данные

None

По умолчанию этот командлет не возвращает выходные данные.

При использовании параметра PassThru этот командлет возвращает объект Process .

Примечания

PowerShell включает следующие псевдонимы для Start-Process :

Собственные команды — это исполняемые файлы, установленные в операционной системе. Эти исполняемые файлы можно запускать из любой оболочки командной строки, например PowerShell. Обычно команда выполняется точно так же, как в bash или cmd.exe . Командлет Start-Process можно использовать для выполнения любых собственных команд, но его следует использовать только при необходимости управлять выполнением команды.

Start-Process полезно для запуска программ графического интерфейса на платформах, отличных от Windows. Например, запустите Start-Process gedit , чтобы запустить графический текстовый редактор, распространенный в средах РАБОЧЕГО стола GNOME.

По умолчанию Start-Process запускает процесс асинхронно. Элемент управления мгновенно возвращается в PowerShell, даже если новый процесс по-прежнему запущен.

  • В локальной системе запущенный процесс живет независимо от вызывающего процесса.
  • В удаленной системе новый процесс завершается при завершении удаленного сеанса сразу после Start-Process выполнения команды. Поэтому вы не можете использовать Start-Process в удаленном сеансе, ожидая, что запущенный процесс перешел к сеансу.

Если необходимо использовать Start-Process в удаленном сеансе, вызовите его с параметром Wait . Кроме того, можно использовать другие методы для создания нового процесса в удаленной системе.

При использовании параметра Start-Process Wait ожидает завершения дерева обработки (процесса и всех его потомков) перед возвратом элемента управления. Это отличается от поведения командлета Wait-Process , который ожидает завершения указанных процессов.

В Windows наиболее распространенным вариантом Start-Process использования является использование параметра Wait для блокировки хода выполнения до завершения нового процесса. В системе, отличной от Windows, это редко требуется, так как поведение по умолчанию для приложений командной строки эквивалентно Start-Process -Wait .

Этот командлет реализуется с помощью метода Start класса System.Diagnostics.Process. Дополнительные сведения об этом методе см. в разделе Process.Start Method.

Связанные ссылки

  • about_Quoting_Rules
  • Debug-Process
  • Get-Process
  • Start-Service
  • Stop-Process
  • Wait-Process

Совместная работа с нами на GitHub

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

Как запустить exe через bat minimized

Допустим, есть BAT, который прекрасно работает. Мы его решили запускать через start /min из планировщика. Всего-то изменение способа запуска повлечет неприятную необходимость менять код: все goto :eof придется заменить на EXIT + поставить EXIT в конце (иначе окно не закроется и со временем накопится столько незакрытых черных окон, что сервер упадет). При этом BAT станет непригоден для использования, если он вызывается из другого BAT (т.к. завершится весь процесс CMD). Получается, если ставить цель написать сценарий, корректно работающий в различных вариантах запуска, необходимо следовать правилу, согласно которому, каждому сценарию должна в параметрах передаваться информацию о способе его запуска, а этот сценарий, в свою очередь, должен снабжать этой же информацией другие сценарии в цепочке, передавая ее параметрах вызова.

Все это крайне неприятно, если не иметь отдельный исполняемый EXE модуль (как в Win9x), выполняющий запуск процесса/сценария в свернутом виде.

Я решил проблему такой программкой на дельфи. Это снимает все негативные моменты + дает дополнительный бонус в виде отсутствия мелькания черных окон и/или сбивания фокуса при запуске из планировщика. Первый параметр — имя процесса (можно указывать EXE и также непосредственно BAT, без полного пути и расширения), остальные — параметры запускаемого процесса. Например:
startmin cmd /c dir c:\*.*
startmin «c:\Admin scripts\daily backup.bat» «\\server\common files\*.*»

program startmin; uses SysUtils, Windows,ShellAPI; var Param,ProgCmdLine:AnsiString; i:integer; begin ProgCmdLine := ''; for i:= 2 to ParamCount do begin if i >= 3 then ProgCmdLine := ProgCmdLine +' '; Param := ParamStr(i); if Pos(' ',Param) <> 0 then Param := '"'+Param+'"'; ProgCmdLine := ProgCmdLine + Param; end; ShellExecute(0,nil,PChar(ParamStr(1)),PChar(ProgCmdLine),nil,SW_SHOWMINNOACTIVE); end.

Запуск приложений в свёрнутых окнах

Author24 — интернет-сервис помощи студентам

Данный код батника запускает все эти программы будет там » /min » или нет, запуск происходит не в свёрнутом режиме.

Так же проверял работает ли команда » /min » на другом приложении:

1 2 3 4 5
@echo off start /min notepad.exe exit

на notepad.exe системном приложении работает.

При запуске винды запихнул 2-ва ярлыка Opera, Google Chrome в автозагрузку, так же поменял в свойствах ярлыка Окно: Свернутое в значок но это не помогло, программы запускаются в обычном режиме.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Запуск нескольких команд в отдельных окнах параллельно
Здравствуйте. Имеются несколько команд например: ping mail.ru -t ping i.ua -t tracert .

Запуск нескольких программ с автоматическим нажатием кнопки «OK» в появляющихся окнах
Добрый день. Подскажите по такому вопросу, есть простой батник который запускает небольшое.

Запуск 2 приложений через bat
Парни, помогите пожалуйста написать батник. Задача такая, на раб. столе находятся два ярлыка. Нужно.

Запрет на запуск приложений или открытие документов с общего сетевого диска
Здравствуйте дорогие эксперты! Обращаюсь к вам, возможно с элементарным вопросом, но прошу.

Эксперт WindowsАвтор FAQ

17998 / 7699 / 892
Регистрация: 25.12.2011
Сообщений: 11,477
Записей в блоге: 16

У мюторрента есть ключ /minimized, а у остального нет спец. ключа. Только постфактум после запуска. Через утилиту nircmd можно сделать. Можете скачать отсюда и положить рядом с батником.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
@echo off SetLocal EnableExtensions if "%~1"=="" start "" /min cmd /c ""%~fs0" "Модератор любит орешки""& exit /B) "%appdata%\uTorrent\uTorrent.exe" /minimized call :ExecAndMin "C:\Program Files (x86)\Opera\launcher.exe" "opera.exe" call :ExecAndMin "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" goto :eof :ExecAndMin start "" /min "%~1" For /L %%C in (1,1,5) do ( if "%~2"=="" (nircmd win min process "%~nx1") else (nircmd win min process "%~2") timeout /t 1 || ping -n 2 2130706433 )

Регистрация: 29.07.2015
Сообщений: 8

Dragokas, спасибо за ответ!

Ну вобщем так.
1. Если запустить ваш код через батник то, запускается только уторрент, остальные приложения не запускаются. Окно cmd при этом находится в свернутом режиме на панели задач. Первый скрин.

2. На втором скрине я поменял местами одну строку.

1 2 3
call :ExecAndMin "C:\Program Files (x86)\Opera\launcher.exe" "opera.exe" call :ExecAndMin "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" "%appdata%\uTorrent\uTorrent.exe" /minimized

поставив уторрент в конце. Это позволило запустить все приложения в свернутом режиме. Но при этом cmd-окно настойчиво не хотело закрыватся само собой.

3. На третьем скрине запуск-выход всех приложений в 3-4 раз подряд при этом приложения запускаются в свернутом режиме, а Гугл Хром уже в таком ущербном виде, при этом его невозможно вызвать из свернутого режима в обычный «на весь экран» только после перезапуска самого Хрома.

4. 4-й скрин nircmd в папке с батником.

5. Если положить ярлык батника в папку Автозапуска, то при старте винды в свернутом режиме запускается разве что только уторрент.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *