Как запустить программу в фоне windows

OS Windows XP
Есть консольная программа, которая работает несколько часов, выводит информацию на стандартный поток вывода. Нужно запустить её в фоновом режиме из .bat файла (в этом файле до запуска этой программы выполняются ещё другие нужные действия) так, чтобы не осталось на экране открытого окна, даже консольного (cmd.exe), но при этом вывод программы перенаправить в файл.

Просто фоновый режим (без окна), но без перенаправления в файл работает так.
start /b myprog.exe

Просто перенаправление вывода в файл, но без закрытия окна работает так.
cmd /c «myprog.exe > myfile.txt»
или
myprog.exe > myfile.txt
В любом из этих случаев .bat не заканчивает выполнения, а ждёт завершения этой команды (которая работать будет несколько часов) и не закрывает своё окно, которое зачет-то открыл.

Таким образом, для немедленного завершения .bat файла приходится использовать команду start, иначе никак. Однако команда
start /b myprog.exe > myfile.txt
будет делать не то, что нужно, так как поток перенаправится от команды start, а не от myprog.exe, как нужно.

Единственной возможностью остаётся вложить команду cmd в команду start так.
start /b cmd /c «myprog.exe > myfile.txt»
По описаниям в помощи это должно делать то, что нужно, однако почему-то окно всё равно не закрывается.

Вообще непонятно, зачем понадобилось открывать окно по умолчанию и создавать такие сложности, чтобы его специально закрыть. В OS Linux всё наоборот. По умолчанию окна нет, если оно нужно, то отдельной опцией это указывается. В OS Linux требуемое действие делается очень просто так.
myprog > myfile &

Ещё одна сложность в том, что команда cmd принимает в качестве параметра строку, которую нужно выполнить, что удобно, но не умеет её выполнять, не открывая окна. Команда start как раз сделана для того, чтобы не открывать окно, однако она не умеет выполнять команду в виде строки, а принимает первым параметром имя программы, вторым параметром — первый параметр запускаемой программы и так далее, что делает невозможным перенаправить поток вывода запускаемой программы в файл, так как знак > перенаправит поток вывода команды start.

У каждой из этих двух команд есть преимущества и недостатки, но сделать то, что нужно не получается даже комбинируя их.

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

Я уже долго мучался сам, советовался с друзьями, но никто не может помочь. Обращаюсь теперь к вам в надежде, что фирма Microsoft всё же лучше знает, как использовать возможности её командной строки для достижения нужного результата. Если ВЫ не поможете, больше обращаться мне не к кому. Это ВАШ программный продукт, всё что можно почерпнуть из помощи по этим командам, я прочитал, но там практически нет ничего нужного.

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

In linux you can use command & to run command on the background, the same will continue after the shell is offline. I was wondering is there something like that for windows…

Josh Withee's user avatar

Josh Withee

10.1k3 gold badges44 silver badges63 bronze badges

asked Jan 9, 2014 at 21:08

Louis's user avatar

5

I believe the command you are looking for is start /b *command*

For unix, nohup represents ‘no hangup’, which is slightly different than a background job (which would be *command* &. I believe that the above command should be similar to a background job for windows.

answered Jan 9, 2014 at 21:13

Oeste's user avatar

OesteOeste

1,0512 gold badges7 silver badges13 bronze badges

3

I’m assuming what you want to do is run a command without an interface (possibly automatically?). On windows there are a number of options for what you are looking for:

  • Best: write your program as a windows service. These will start when no one logs into the server. They let you select the user account (which can be different than your own) and they will restart if they fail. These run all the time so you can automate tasks at specific times or on a regular schedule from within them. For more information on how to write a windows service you can read a tutorial online such as (http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx).

  • Better: Start the command and hide the window. Assuming the command is a DOS command you can use a VB or C# script for this. See here for more information. An example is:

    Set objShell = WScript.CreateObject("WScript.Shell")
    objShell.Run("C:\yourbatch.bat"), 0, True
    

    You are still going to have to start the command manually or write a task to start the command. This is one of the biggest down falls of this strategy.

  • Worst: Start the command using the startup folder. This runs when a user logs into the computer

Hope that helps some!

Community's user avatar

answered Jan 9, 2014 at 21:14

drew_w's user avatar

drew_wdrew_w

10.3k4 gold badges28 silver badges49 bronze badges

3

Use the start command with the /b flag to run a command/application without opening a new window. For example, this runs dotnet run in the background:

start /b dotnet run

You can pass parameters to the command/application too. For example, I’m starting 3 instances of this C# project, with parameter values of x, y, and z:

enter image description here

To stop the program(s) running in the background: CTRL + BREAK

In my experience, this stops all of the background commands/programs you have started in that cmd instance.

According to the Microsoft docs:

CTRL+C handling is ignored unless the application enables CTRL+C processing. Use CTRL+BREAK to interrupt the application.

Community's user avatar

answered Oct 23, 2019 at 20:52

Josh Withee's user avatar

Josh WitheeJosh Withee

10.1k3 gold badges44 silver badges63 bronze badges

You should also take a look at the at command in Windows. It will launch a program at a certain time in the background which works in this case.

Another option is to use the nssm service manager software. This will wrap whatever command you are running as a windows service.

UPDATE:

nssm isn’t very good. You should instead look at WinSW project. https://github.com/kohsuke/winsw

answered Sep 11, 2016 at 3:18

Nicholas DiPiazza's user avatar

Nicholas DiPiazzaNicholas DiPiazza

10.1k11 gold badges84 silver badges154 bronze badges

If you take 5 minutes to download visual studio and make a Console Application for this, your problem is solved.

using System;
using System.Linq;
using System.Diagnostics;
using System.IO;

namespace BgRunner
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Starting: " + String.Join(" ", args));
            String arguments = String.Join(" ", args.Skip(1).ToArray());
            String command = args[0];

            Process p = new Process();
            p.StartInfo = new ProcessStartInfo(command);
            p.StartInfo.Arguments = arguments;
            p.StartInfo.WorkingDirectory = Path.GetDirectoryName(command);
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.UseShellExecute = false;
            p.Start();
        }
    }
}

Examples of usage:

BgRunner.exe php/php-cgi -b 9999
BgRunner.exe redis/redis-server --port 3000
BgRunner.exe nginx/nginx

answered Feb 14, 2021 at 3:19

Afterparty's user avatar

AfterpartyAfterparty

611 silver badge1 bronze badge

4

It’s unimaginable that after a decade that Windows still doesn’t have a decent way to run commands in background.

start /B command is the most given answer, but the command will be closed when the terminal closed.

Now, Windows 10 have a built-in(you have to install it mannually though) ssh server. you can run

ssh username@localhost "my_backgroud_command --params"

and then CTRL C, close the terminal, the command will continue to run in background.

This is the most decent way I have found so far.
Although not decent enough, because you have to install and configure the ssh server first.

answered Jan 28, 2022 at 4:44

Gary Allen's user avatar

Gary AllenGary Allen

3951 gold badge3 silver badges11 bronze badges

3

To run a command in background on windows cmd
Add prefix «start /B» with it. Below code run cmd1 in background.

start /B cmd1

To run multiple command parallelly on windows cmd, we can run using belowe command in cmd.

start /B cmd1 & start /B cmd2

answered Jul 14 at 9:39

Birbal Sain's user avatar

An option I use frequently when I need to run a simple command, or set of commands, in the background and then log off, is to script the command(s) (BAT, CMD, PowerShell, et al. … all work fine) and then execute the script using Windows native Task Scheduler. Jobs that are executed from the Task Scheduler do not die when you log off. Task Scheduler jobs can be configured to run as «hidden» i.e. the command prompt window will not be displayed. This script + Task Scheduler is a great alternative rather than developing an executable (e.g. yadda.exe) in your favorite development environment (e.g. Visual Studio) when the task at hand is simple and writing a console application to execute a simple command or two would be «overkill» i.e. more work than it’s worth.

Just my two cents.

Cheers!

answered Jul 21, 2022 at 21:06

InTech97's user avatar

On a windows server here, use a title (in double brackets) , otherwise it will not «release» :

start «» «chrome.exe —parameters» && echo truc

answered Nov 7, 2022 at 15:48

Bastien Gallienne's user avatar

Как известно, что в компьютерных, что в мобильных операционных системах достаточно много программ работает в фоне. Иными словами, программа фоновом режиме потребляет ресурсы системы точно так же, как и консольные приложения, однако пользователю не видна. Сейчас будет рассмотрено несколько случаев использования такого режима для Windows и наиболее популярных мобильных ОС.

Что такое фоновый режим и для чего он нужен?

Итак, уже понятно, что саму программу, работающую в фоне, пользователь не видит. Определить состояние ее активности можно двояко. В общем случае для этого в Windows-системах используется стандартный «Диспетчер задач», в котором на разных вкладках отображены все запущенные процессы, включая и активные приложения в фоновом режиме. В более конкретном случае, если речь идет о пользовательских программах, их можно найти в свернутом виде в системном трее.

фоновый режим

Однако далеко не каждая программа может сама по себе сворачиваться таким образом, чтобы ее консольное окно не отображалось вообще. Тот же «Планировщик задач» или настройка автозапуска в момент старта Windows нужного эффекта не дают. Окно приложения открывается в любом случае. С мобильными девайсами дело обстоит проще, хотя в большинстве случаев, как и для Windows, речь идет о системных службах и процессах. Тем не менее включить фоновый режим для программ юзера в любой из этих систем можно.

Как запустить программу в фоновом режиме в Windows 10

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

Фоновый режим для пользовательских программ включается в два этапа, один из которых является необязательным (далее будет объяснено, почему). Первым делом следует зайти в раздел параметров, который вызывается из меню «Пуск», после чего перейти к настройкам конфиденциальности.

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

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

как включить фоновый режим

Для того чтобы включить запуск приложения при старте системы, основной исполняемый файл программы следует включить в список автозагрузки либо в «Диспетчере задач», либо в настройках конфигурации, вызываемых командой msconfig в консоли «Выполнить» (Win + R). После этого будет активирован и автостарт, и фоновый режим. Вот только не следует забывать о работающем приложении, ведь потребление системных ресурсов может неоправданно возрасти. И добавить свою программу можно только при помощи специальных утилит или поместить ярлык программы в папку автозапуска вручную.

Как включить фоновый режим приложений на iPhone?

Теперь несколько слов о «яблочных» мобильных гаджетах. Фоновый режим включить в них тоже можно. Для примера возьмем iPhone (хотя по большому счету без разницы, какое устройство будет использоваться).

Сначала нужно скачать небольшую бесплатную утилиту под названием Backgrounder (сделать это можно на компьютере через сервис Sydia, поскольку в «родном» хранилище этого приложения нет). Далее следует загрузить инсталлятор на устройство через iTunes и установить программу. Желательно создать нужный каталог вручную, скопировать в него инсталляционный файл и установить приложение туда же.

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

приложения в фоновом режиме

Что касается включения фонового режима, тут все просто. При запуске какой-то программы, когда она полностью откроется, нужно нажать на кнопку Home и удерживать ее в течение примерно 3 секунд. После этого появится сообщение об активации утилиты Backgrounder, и приложение свернется. Для восстановления исходного состояния программы снова используется та же кнопка с удерживанием, но после этого появляется сообщение о деактивации утилиты, за чем последует выход приложения из фонового режима.

Использование фоновой работы для Google Play

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

фоновый режим

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

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

Вместо итога

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



Если вы похожи на большинство пользователей Windows, у вас есть множество замечательных маленьких утилит, которые запускаются при запуске Windows. Хотя это отлично работает для большинства приложений, некоторые из них было бы неплохо запустить даже до того, как пользователь войдет в систему на ПК. Для этого вам нужно запустить приложение как службу Windows.


Службы Windows

представляют собой специальный класс программ, которые настроены для запуска и работы в фоновом режиме, обычно без какого-либо пользовательского интерфейса и без необходимости входа пользователя в систему на ПК. Многие геймеры и опытные пользователи знают их как те вещи, которые вы отключили, чтобы ускорить работу вашей системы.

это действительно больше не нужно

.

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


СВЯЗАННЫЕ С:




Понимание и управление службами Windows


Прекрасным примером этого является

Plex

, приложение медиа-сервера, которое может передавать локальный контент практически на любое ваше устройство. Конечно, вы могли бы оставить его на панели задач, как обычную программу, но что, если компьютер перезагрузится из-за отключения электроэнергии или запланированных обновлений? Пока вы снова не войдете в систему на ПК, Plex будет недоступен. Это раздражает, если вам приходится бежать в другую комнату, чтобы снова запустить Plex, пока ваш попкорн остывает, и очень раздражает, если вы находитесь за городом и пытаетесь транслировать свои медиа через Интернет. Настройка Plex как службы решит эту проблему.

Прежде чем начать, вы должны знать о нескольких важных предостережениях при запуске приложения как службы:

  • Приложение не будет размещать значок на панели задач. Если вам нужен интерфейс, регулярно доступный для приложения, он может не подходить для работы в качестве службы.
  • Когда вам нужно внести изменения или обновления в конфигурацию, вам нужно будет остановить службу, запустить программу как обычное приложение, сделать то, что вам нужно, остановить программу, а затем снова запустить службу.
  • Если программа уже настроена для запуска при запуске Windows, вам необходимо отключить ее, чтобы не было запущено два экземпляра. У большинства программ есть опция в интерфейсе для переключения этого параметра. Другие могут добавить себя в ваш

    Папка автозагрузки

    , чтобы вы могли удалить их там.

Готовы катиться? Поговорим о том, как это настроить.

Шаг первый: установите SrvStart

Чтобы запустить приложение как услугу, вам понадобится небольшая сторонняя утилита. Их несколько, но наш любимый —

SrvStart

. Первоначально он был разработан для Windows NT и будет работать практически с любой версией Windows, начиная с Windows XP.

Для начала перейдите в

Страница загрузки SrvStart

и возьмите утилиту. Скачивание содержит всего четыре файла (два DLL и два EXE-файла). Установщика нет; вместо этого скопируйте их на свой компьютер

C: \ Windows

вложите их в основную папку Windows, чтобы «установить» SrvStart.



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

Шаг 2. Создайте файл конфигурации для новой службы

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

страница документации

. В этом примере мы будем использовать только две команды:

запускать

, который указывает программу для запуска, и

shutdown_method

, который сообщает SrvStart, как закрыть программу, когда соответствующая служба остановлена.

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

запускать

команда просто указывает путь, по которому находится исполняемый файл. Для

shutdown_method

команда, мы используем

сообщение

Параметр, который заставляет SrvStart отправлять сообщение о закрытии Windows в любые окна, открытые службой.

[Plex]
startup = "C: \ Program Files (x86) \ Plex \ Plex Media Server \ Plex Media Server.exe"
shutdown_method = winmessage

Очевидно, измените путь и имя в соответствии с программой, которую вы запускаете.



Сохраните новый файл конфигурации в любом месте и замените расширение .txt на .ini. Запомните имя файла, оно нам понадобится на следующем шаге. Для упрощения ввода в командной строке мы предлагаем временно сохранить этот файл прямо на диске C :.

Шаг третий: используйте командную строку для создания новой службы

Следующим шагом будет использование команды Windows Service Controller (SC) для создания новой службы на основе критериев в вашем файле конфигурации. Откройте командную строку, щелкнув правой кнопкой мыши меню «Пуск» (или нажав Windows + X), выбрав «Командная строка (администратор)», а затем щелкнув Да, чтобы разрешить запуск с правами администратора.



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

SC CREATE <servicename> Displayname = "<servicename>" binpath = "srvstart.exe <servicename> -c <путь к файлу конфигурации srvstart>" start = <starttype>

В этой команде нужно отметить несколько моментов. Во-первых, после каждого знака равенства (=) стоит пробел. Это обязательно. Так же

<servicename>

ценность полностью зависит от вас. И, наконец, для

<тип запуска>

значение, вы хотите использовать

авто

так что служба запускается автоматически с Windows.

Итак, в нашем примере с Plex команда будет выглядеть так:

SC CREATE Plex Displayname = "Plex" binpath = "srvstart.exe Plex -c C: PlexService.ini" start = auto

Да, вы правильно прочитали: я использовал

C: PlexService.ini

вместо того

C: \ PlexService.ini

. Команда требует убрать косую черту.

Когда вы запустите команду, вы должны получить сообщение УСПЕХ, если все пойдет хорошо.



С этого момента ваша новая служба будет запускаться при каждом запуске Windows. Если вы откроете интерфейс служб Windows (просто нажмите «Пуск» и введите «Службы»), вы сможете найти и настроить новую службу так же, как любую другую.



Вот и все. Если у вас есть приложения, запускаемые с Windows, и вы предпочитаете, чтобы они запускались без необходимости входа пользователя в систему, достаточно легко превратить любое приложение в службу. Мы только что коснулись основного метода создания и запуска новой службы, но с помощью SrvStart вы можете сделать гораздо больше, чтобы точно настроить работу службы. Обязательно ознакомьтесь с документацией, если хотите узнать больше.

How To Run Any Program As A Background Service In Windows

How To Run Any Program As A Background Service In Windows

Run Python Programs In Background As Windows Service

How To Run Memcached As A Windows Service

How To Run Background Processes On Windows

How To Disable Running Background Programs In Windows

How To Disable Background Services In Windows 10

How To Create A Windows Service Using Exe File

How To Run Python File In Background Mac/Linux/Windows Secretly

Remove Programs Running In The Background In Windows 7

Stop Windows 10 Apps From Running In The Background

How To Enable Or Disable Background Apps In Windows 10

Close/stop Programs Running In Background — Windows 7

Disable Programs Running In The Background In Windows | HP Computers | HP

Background Tasks Without A Separate Service: Hangfire For ASP.NET

How To Stop Running Background Apps In Windows 8 (updated)

How To Stop Universal Windows Platform Apps From Running In Background | Windows 10 Tutorial

C# Tutorial — How To Make An Application Auto Run On Windows Startup | FoxLearn

Intro To Windows Services In C# — How To Create, Install, And Use A Service Using Topshelf

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

1. Использование консольных команд

Одним из наиболее распространенных способов запуска программ в фоновом режиме на Windows является использование командной строки. Для этого необходимо выполнить следующие шаги:

  • Откройте командную строку (нажмите Win + R и введите cmd, затем нажмите Enter).
  • Перейдите в директорию, где расположен исполняемый файл программы. Для этого используйте команду cd с путем к директории (например, cd C:\Program Files\MyProgram).
  • Запустите программу, введя название исполняемого файла (например, MyProgram.exe), с указанием параметров запуска, если необходимо.

Программа будет запущена в фоновом режиме, и окно командной строки можно закрыть без остановки программы.

2. Использование планировщика задач

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

  • Откройте Планировщик задач (нажмите Win + R и введите taskschd.msc, затем нажмите Enter).
  • Щелкните правой кнопкой мыши на «Планировщик задач» в левой панели и выберите «Создать задачу».
  • Введите имя задачи и описание, если необходимо.
  • Перейдите на вкладку «Действие» и нажмите «Создать».
  • Укажите путь к исполняемому файлу программы и ее аргументы, если необходимо.
  • В разделе «Настройки» выберите «Выполнять задачу следующим образом:» и выберите опцию «Начните задачу, только если компьютер не используется» или «Начните задачу, только если компьютер подключен к сети». Это позволит запустить программу в фоновом режиме, только когда компьютер не используется пользователем.
  • Нажмите «ОК», чтобы сохранить задачу.

Теперь программа будет запускаться в фоновом режиме согласно заданным условиям и параметрам.

3. Использование сторонних утилит

Существуют также сторонние утилиты, которые помогают запускать программы в фоновом режиме на Windows более удобным способом. Некоторые из них включают:

  • nircmd — утилита командной строки с множеством функций, включая запуск программ в фоновом режиме. Вы можете скачать и установить nircmd, а затем использовать команду nircmd exec hide [путь к исполняемому файлу] для запуска программы в фоновом режиме.
  • HideToolz — многофункциональная утилита, которая позволяет запускать программы в фоновом режиме и скрывать их окна. Вы можете загрузить и запустить HideToolz, затем выбрать программу, которую нужно запустить, и щелкнуть правой кнопкой мыши для выбора «Скрыть программу» из контекстного меню.

Использование этих сторонних утилит может быть полезным, чтобы запускать программы в фоновом режиме с минимальным количеством усилий.

В заключении

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

  • Как запустить приложение windows на astra linux
  • Как запустить программу в терминале windows
  • Как запустить проводник через диспетчер задач windows 10
  • Как запустить приложение с правами администратора windows 10
  • Как запустить проводник от имени администратора windows 10