如何在Windows上的后台运行命令?

Lou*_*uis 24 windows

在linux中你可以使用命令 &在后台运行命令,在shell离线后也会继续.我想知道是否有类似于Windows的东西......

Oes*_*ste 39

我相信你要找的命令是 start /b *command*

对于unix,nohup表示'no hangup',这与后台作业略有不同(可能是*command* &.我相信上面的命令应该类似于windows的后台作业.

  • 问题:start/b*command*会在我从服务器注销后立即停止运行吗?是的,对不起我是'命令&'不是'nohup` (5认同)
  • 就像确认一样:是的,如果你注销,命令会死掉(如果你在telnet上连接windows机器来运行命令). (3认同)

dre*_*w_w 14

我假设您要做的是运行没有接口的命令(可能是自动的?).在Windows上有许多选项供您查找:

  • 最好:将您的程序编写为Windows服务.这些将在没有人登录服务器时启动.它们允许您选择用户帐户(可能与您自己的帐户不同),如果失败则会重新启动.它们始终运行,因此您可以在特定时间或在其中定期自动执行任务.有关如何编写Windows服务的更多信息,您可以在线阅读教程,如(http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx).

  • 更好:启动命令并隐藏窗口.假设该命令是DOS命令,您可以使用VB或C#脚本.有关更多信息,请参见此处 一个例子是:

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

    您仍然需要手动启动命令或编写任务以启动命令.这是该策略中最大的下跌之一.

  • 最差:使用启动文件夹启动命令.这在用户登录计算机时运行

希望有所帮助!


Jos*_*hee 8

使用start带有/b标志的命令可以在不打开新窗口的情况下运行命令/应用程序。例如,这dotnet run在后台运行:

start /b dotnet run
Run Code Online (Sandbox Code Playgroud)

您也可以将参数传递给命令/应用程序。例如,我开始这个C#项目的3个实例,用的参数值xy以及z

在此处输入图片说明

要停止在后台运行的程序: CTRL + BREAK

根据我的经验,这会停止您在该cmd实例中启动的所有后台命令/程序。

根据微软文档

除非应用程序启用 CTRL+C 处理,否则将忽略 CTRL+C 处理。使用 CTRL+BREAK 中断应用程序。


Nic*_*zza 5

您还应该查看atWindows 中的命令。它将在后台的某个时间启动一个程序,该程序在本例中有效。

另一种选择是使用nssm服务管理器软件。这将包装您作为 Windows 服务运行的任何命令。

更新:

nssm不太好。您应该查看 WinSW 项目。https://github.com/kohsuke/winsw


Gar*_*len 5

令人难以想象的是,十年后 Windows 仍然没有一个像样的方式在后台运行命令。

start /B command是给出最多的答案,但是当终端关闭时该命令将被关闭。

现在,Windows 10 有一个内置的(不过你必须手动安装)ssh 服务器。你可以跑

ssh username@localhost "my_backgroud_command --params"
Run Code Online (Sandbox Code Playgroud)

然后CTRL C,关闭终端,命令将继续在后台运行。

这是迄今为止我发现的最体面的方法。虽然不够体面,因为你必须先安装和配置 ssh 服务器。