我希望能够通过 Windows 中的批处理脚本打开 Thunderbird。我可以通过命令行顺利完成此操作:
C:\>"C:\Program Files\Mozilla Thunderbird\thunderbird.exe"
如果我创建一个如下所示的批处理脚本:
"C:\Program Files\Mozilla Thunderbird\thunderbird.exe"
并从命令行执行它:
C:\>t.cmd
C:\>"C:\Program Files\Mozilla Thunderbird\thunderbird.exe"
Thunderbird 打开了,但是脚本停止了(它没有退出)。
如果我手动关闭 Thunderbird,脚本就会退出。
我已经有一段时间没有使用批处理脚本了。我做错了什么吗?
编辑:如果 Thunderbird 已经打开,脚本就会正常退出。很奇怪。
答案1
尝试
启动/d“C:\ Program Files \ Mozilla Thunderbird” thunderbird.exe
答案2
正如 Systech 所建议的,该start
命令就是您要寻找的运行程序的命令,而不是等待它终止后再继续。
当 Thunderbird 已在运行时,您会看到不同的行为,原因是它只允许一个副本运行。第二个副本会检测第一个副本,并在离开之前将其置于焦点位置(因此实际上会立即将控制权返回到批处理脚本)。如果您调用允许多个实例运行的应用程序(如果您想亲自测试一下,记事本会做类似的事情),您将看不到行为上的差异。
答案3
脚本停滞的原因是因为它正在等待 Thunderbird 完成并将控制权返回给批处理文件。
您需要按照 Systech 的建议使用“/d”选项。
答案4
因此,如果您想从 Windows 命令行或批处理文件运行 T'bird,我已经知道如何操作。您可能已经注意到,使用带有任何参数组合的启动命令并不能实现您真正想要的效果。
第一步是创建一个 Windows Scripting Host 命令文件。将其放在与 T'bird 可执行文件相同的目录中,可以将其命名为 tbird.wsf:
<job>
<script language="VBScript">
Set WshShell = CreateObject("WScript.Shell")
cmds=WshShell.RUN("cmd /c thunderbird.exe", 0, False)
</script>
</job>
获得该文件后,即可从命令行或批处理文件调用它,如下所示:
cscript tbird.wsf
当然,这会使一个额外的进程停留在你的系统中,直到你关闭 T'bird 才会停止。但我认为这确实实现了许多人想要的。