如何在Windows命令提示符中并行运行多个命令?

7

我知道在Windows CMD中可以像下面这样运行两个命令:

dir & echo foo

但是如何同时运行两个命令呢?我知道可以使用START来实现这一点。但是这样你必须将这些命令放入批处理文件中。我想要从命令行本身并行启动它们。

我想要实现的��果类似于这样:

set NODE_ENV=development&& nodemon -e js,jsx,cjsx,css,scss,html,coffee --watch ./app/ server/server.js & set NODE_ENV=development&& node server/hotLoadServer.js

如果我在不同的窗口中单独运行这些命令,它们可以完美地工作。但是我似乎无法将它们作为一个一行命令在一个cmd提示符中运行。发生的情况是,第一个被运行,第二个没有被运行。第一个会保持打开状态,第二个则永远不会被执行。


我认为唯一的机会是使用 start,因为它不会等待命令退出;例如 start "" "commandline1" & start "" "commandline2"... - aschipfl
没有工作,我尝试了:start "" "set NODE_ENV=development&& nodemon -e js,jsx,cjsx,css,scss,html,coffee --watch ./app/ server/server.js" & start "" "set NODE_ENV=development&& node server/hotLoadServer.js"。它提示:“Windows找不到上述命令....” - Ville Miekk-oja
也许你需要提供完整的路径...? - aschipfl
这个回答解决了你的问题吗?如何并行运行多个DOS命令? - Георги Кременлиев
2个回答

6

这会同时执行两个任务,并打开一个窗口来显示它们:

# powershell
start ping google.com; start ping example.com
# cmd
start ping google.com & start ping example.com

这个命令与之前的相同,但是使用/B选项可以阻止任何新窗口在cmd中打开:

start /B ping google.com & start ping example.com

我没有在PowerShell中找到直接的等价物,但是在PowerShell中启动此命令可以解决问题:

cmd /C 'start /B ping google.com & start /B ping example.com'

注意,PowerShell的Start-Job命令还允许用户启动后台作业。

0

谢谢,但是没有起作用。它继续执行第一个命令,由于第一个命令从未结束(它是一个服务器),因此它永远不会到达第二个命令。我在原帖中添加了更多内容,请检查一下。 - Ville Miekk-oja
也许 cmd /K 可以帮忙? - aschipfl
/K 意味着“执行由字符串指定的命令,但保持不变”,如果您查看 /? 显示的帮助,那么它对于并行运行事物不应该有用。 - George Birbilis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接