17

我正在使用 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 答案,但它指的是我正在使用的相同方法。

编辑:

使用 start 命令,它只会启动 2 个终端窗口,但什么也没有启动!

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

5 回答 5

24

使用 start 命令,它只会启动 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
于 2011-06-27T01:55:11.743 回答
4

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

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

于 2013-06-19T04:15:05.883 回答
2

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

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

到目前为止,该参考资料几乎回答了我关于 CMD 的所有问题。

于 2014-03-21T14:53:20.170 回答
1

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

于 2011-06-27T01:14:25.593 回答
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)。

于 2019-09-13T20:19:01.137 回答