1

Я хочу иметь возможность открывать Thunderbird из пакетного скрипта в Windows. Я могу сделать это просто отлично из командной строки:

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 уже открыт. Странный.

5 ответов5

4

Пытаться

Запустите /d "C:\Program Files\Mozilla Thunderbird" thunderbird.exe

2

Как предлагает Systech, команда start - это то, что вы ищете, чтобы запустить программу, а не ждать ее завершения, прежде чем продолжить.

Причина, по которой вы видите другое поведение, когда Thunderbird уже запущен, заключается в том, что он позволяет запускать только одну копию. Вторая копия обнаруживает первую и дает ей фокус перед уходом (так эффективно немедленно возвращает управление вашему пакетному сценарию). Если бы вы вызывали приложение, которое позволяет запускать несколько его экземпляров (что-то столь же простое, как в случае с блокнотом, если вы хотите проверить это сами), вы бы не увидели эту разницу в поведении.

1

FWIW это не работает должным образом в Windows7. Даже при запуске /b Thunderbird завершает работу, когда закрывается окно управляющей оболочки.

Тем не менее, после того, как вы запустили T'bird, вы можете правильно открыть другие подокна (например, thunderbird -addressbook) из командной строки.

1

Причина, по которой скрипт останавливается, заключается в том, что он ожидает завершения работы Thunderbird и возврата управления в командный файл.

Вам нужно использовать параметр "/d", как предлагает Systech.

0

Итак, если вы хотите запустить T'bird из командной строки Windows или командного файла, я понял, как это сделать. Как вы, наверное, заметили, использование команды start с любой комбинацией параметров не дает того, что вы действительно хотите.

Первым шагом является создание командного файла 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. Но это действительно то, чего, я думаю, хотят многие люди.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .