如何在Windows命令提示符下同时启动2个程序

时间:2011-06-27 01:00:43

标签: windows-7 command-line cmd command-prompt windows-console

我正在使用Windows 7 64位

以下是我用来启动的代码段

@echo off
call "C:\Program Files (x86)\LOLReplay\LOLRecorder.exe"
call "G:\League of Legends\lol.launcher.exe"
exit

但除非我关闭LOLRecorder.exe,否则它将无法启动我的lol.launcher.exe ....基本上我希望它们都运行并且cmd提示符在它们启动后退出。这里有什么不对?我检查了另一个stackoverflow回答Here,但它指的是我正在使用的相同方法。

编辑:

使用启动命令,它只启动2个终端窗口,没有任何启动!

@echo off
start "C:\Program Files (x86)\LOLReplay\LOLRecorder.exe"
start "G:\League of Legends\lol.launcher.exe"
exit

5 个答案:

答案 0 :(得分:20)

  

使用启动命令,它只启动2个终端窗口,没有任何启动!

问题是引号(由于路径中的空格,不幸的是需要引号)。 start命令似乎不喜欢它们。

您可以通过使用所有目录的短DOS名称(并删除引号),或通过单独指定目录并引用它(start命令似乎能够处理)来解决此问题。

试试这个:

@echo off
start /d "C:\Program Files (x86)\LOLReplay" LOLRecorder.exe
start /d "G:\League of Legends" lol.launcher.exe

或者,如果您的批处理文件将来变得更复杂,或者您的程序名称中包含空格,请执行以下操作:

@ECHO OFF

CALL :MainScript
GOTO :EOF

:MainScript
  CALL :RunProgramAsync "C:\Program Files (x86)\LOLReplay\LOLRecorder.exe"
  CALL :RunProgramAsync "G:\League of Legends\lol.launcher.exe"
GOTO :EOF

:RunProgramAsync
  REM ~sI expands the variable to contain short DOS names only
  start %~s1
GOTO :EOF

答案 1 :(得分:3)

start需要窗口标题的参数。 尝试: 启动“Lolrecorder”“C:\ Program Files(x86)\ LOLReplay \ LOLRecorder.exe” 开始“Lol-Launcher”“G:\ League of Legends \ lol.launcher.exe”

这将通过启动“Lolrecorder”和“Lol-Launcher”的标题启动cmd-windows

答案 2 :(得分:2)

指定一个标题和/ c开关,告诉STARTed窗口在命令完成后消失。

start "recorder" /c "C:\Program Files (x86)\LOLReplay\LOLRecorder.exe"
start "LOL" /c "G:\League of Legends\lol.launcher.exe"

到目前为止,reference已回答几乎每一个关于CMD的问题

答案 3 :(得分:1)

call仅用于批处理文件,它等待被调用者返回。您应该使用start命令启动后台程序。作为额外的奖励,您可以指定流程的优先级。如果您需要以其他用户身份运行,请使用runas

答案 4 :(得分:0)

有些人可能会对同时检查所有驱动器的正确性感兴趣。这是一个简单的.bat文件:

@echo off
for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%a:\ start cmd /c "echo %%a: & chkdsk %%a: & pause"

脚本在检查每个驱动器后等待键。每个驱动器都有自己的cmd窗口。

如果一个驱动器是另一个容器(例如,VeraCrypt容器,VHD,VHDX),则应避免检查和固定(上面只是检查)驱动器。