如何 运行 来自批处理文件的命令并立即 return?
How to run a command from a batch file and immediately return?
当我在命令行上执行此操作时:
"C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:log
TortoiseGit 的 GUI 对话框打开,cmd.exe 立即 returns,这意味着我可以立即 运行 其他命令,如 dir
等。
因为上述命令很长,我创建了一个帮助程序批处理文件,tgit.cmd,其中仅包含:
@echo off
"C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:%1 %*
我现在可以只调用 tgit log 这很棒,但是,有一个区别:命令行被阻止,直到我关闭 TortoiseGit 对话框。
我也试过了
cmd /C "C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:%1 %*
但这没有任何区别。如何立即从批处理文件中return?
使用 START 来 运行 命令。
start "C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" "/command:log"
Oscar 的回答基本正确,但需要更正
start "" "C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:%1 %*
为什么?
start
命令有一个奇怪的行为:第一个引用的参数用于确定新 cmd
window 的标题,不,不重要cmd
window 将开始。第一个引用的参数是标题。
这就是前面代码中空双引号的原因。没有它,start
命令看到的是
start "title=c:\Progra..." /command:....
并且由于 start
命令不包含 /command
开关,因此失败。
当我在命令行上执行此操作时:
"C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:log
TortoiseGit 的 GUI 对话框打开,cmd.exe 立即 returns,这意味着我可以立即 运行 其他命令,如 dir
等。
因为上述命令很长,我创建了一个帮助程序批处理文件,tgit.cmd,其中仅包含:
@echo off
"C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:%1 %*
我现在可以只调用 tgit log 这很棒,但是,有一个区别:命令行被阻止,直到我关闭 TortoiseGit 对话框。
我也试过了
cmd /C "C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:%1 %*
但这没有任何区别。如何立即从批处理文件中return?
使用 START 来 运行 命令。
start "C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" "/command:log"
Oscar 的回答基本正确,但需要更正
start "" "C:\Program Files\TortoiseGit\bin\TortoiseGitProc.exe" /command:%1 %*
为什么?
start
命令有一个奇怪的行为:第一个引用的参数用于确定新 cmd
window 的标题,不,不重要cmd
window 将开始。第一个引用的参数是标题。
这就是前面代码中空双引号的原因。没有它,start
命令看到的是
start "title=c:\Progra..." /command:....
并且由于 start
命令不包含 /command
开关,因此失败。