如何从批处理文件中运行命令并立即返回?

Bor*_*ard 3 windows cmd batch-file tortoisegit

当我在命令行上并执行此操作时:

"C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:log
Run Code Online (Sandbox Code Playgroud)

打开TortoiseGit的GUI对话框,cmd.exe立即返回,这意味着我可以立即运行其他命令等dir.

因为前面提到的命令很长,所以我创建了一个帮助器批处理文件tgit.cmd,其中包含以下内容:

@echo off
"C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:%1 %*
Run Code Online (Sandbox Code Playgroud)

我现在可以调用tgit log这很好,但是,有一个区别:命令行被阻止,直到我关闭TortoiseGit对话框.

我也试过了

cmd /C "C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:%1 %*
Run Code Online (Sandbox Code Playgroud)

但这没有任何区别.如何立即从批处理文件返回?

MC *_* ND 8

奥斯卡的答案几乎是正确的,但需要纠正

start "" "C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:%1 %*
Run Code Online (Sandbox Code Playgroud)

为什么?

start命令有一个奇怪的行为:第一个引用的参数用于确定新cmd窗口的标题,不,没有cmd窗口将启动没关系.首先引用的论点是标题.

这就是前面代码中空双引号的原因.没有它,start命令看到的是什么

start "title=c:\Progra..." /command:....
Run Code Online (Sandbox Code Playgroud)

并且由于该start命令不包含/command开关,因此失败.

  • @Borek,这是标准行为.有两种应用程序,控制台和gui.从命令行,控制台应用程序阻止和gui不阻止.从批处理文件中都阻止.见`start /?` (2认同)