Как в Windows запустить background task из командной

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
nemiga
Маньяк
Сообщения: 2425
Зарегистрирован: 02 сен 2006, 19:05
Откуда: Minsk -> Seoul -> Ottawa

Как в Windows запустить background task из командной

Сообщение nemiga »

строки, ну, то есть, какой виндовый эквивалент & в командной строке:

Код: Выделить всё

> java -jar file.jar &
TIA

.
Аватара пользователя
Проф. Преображенский
Графоман
Сообщения: 20276
Зарегистрирован: 08 ноя 2006, 11:10

Re: Как в Windows запустить background task из командной

Сообщение Проф. Преображенский »

nemiga писал(а):строки, ну, то есть, какой виндовый эквивалент & в командной строке:

Код: Выделить всё

> java -jar file.jar &
TIA

.
>start /?
Аватара пользователя
nemiga
Маньяк
Сообщения: 2425
Зарегистрирован: 02 сен 2006, 19:05
Откуда: Minsk -> Seoul -> Ottawa

Re: Как в Windows запустить background task из командной

Сообщение nemiga »

Проф. Преображенский писал(а):
nemiga писал(а):строки, ну, то есть, какой виндовый эквивалент & в командной строке:

Код: Выделить всё

> java -jar file.jar &
TIA

.
>start /?

Пробовал start /B. Остается черное окно.

Что интересно, start /min -- работает, как описано, т.е., окно терминала появляется только в линейке задач минимизированным.

Почему не работает start /B -- непонятно :-(

.
CaptainBlack
Маньяк
Сообщения: 2063
Зарегистрирован: 07 июл 2008, 11:58
Откуда: Россия

Re: Как в Windows запустить background task из командной

Сообщение CaptainBlack »

nemiga писал(а):[Пробовал start /B. Остается черное окно.

Что интересно, start /min -- работает, как описано, т.е., окно терминала появляется только в линейке задач минимизированным.

Почему не работает start /B -- непонятно :-(

.
Работает для command line app.

start /B mem например отрабатывает в том же окне, CMD prompt не показывает и молча ждет вызова следующей команды + Enter, или просто Enter.

а без /B - в новом и оно само исчезает после окончания работы

Vista, Sp2
Аватара пользователя
nemiga
Маньяк
Сообщения: 2425
Зарегистрирован: 02 сен 2006, 19:05
Откуда: Minsk -> Seoul -> Ottawa

Re: Как в Windows запустить background task из командной

Сообщение nemiga »

CaptainBlack писал(а):Работает для command line app.

start /B mem например отрабатывает в том же окне, CMD prompt не показывает и молча ждет вызова следующей команды + Enter, или просто Enter.

а без /B - в новом и оно само исчезает после окончания работы

Vista, Sp2
Поскольку я уже решил проблему другим путем, то вопрос несколько потерял актуальность. Но, сама по себе проблема интересная, поэтому опишу подробно.

Итак, мне захотелось, чтобы, когда дабл-кликаешь *.jar файл, вызывалась Java с опцией -jar.

Выяснилось, что стандартным виндовым меню Open with нельзя прописать ключи (т.е., можно назначить, чтобы Open with -> Java SE, но тогда вызовется командная строка:

"C:\%system_root%\system32\java.exe" "%1"

выдающая ошибку, вместо правильной:

"C:\%system_root%\system32\java.exe -jar" "%1"

Недолго думая, я написал bat-файл такого содержания:

START /B C:\%system_root%\system32\java.exe -jar %1

назвал его run_jar.bat и назначил в Windows Explorer расширению *.jar опцию Open with: "C:\%system_root%\system32\run.jar.bat"

Да, теперь jar-файл стал запускаться на исполнение без вопросов, но оставалось пустое черное окно командного интерпретатора. Некрасиво.

Именно в этот момент я и задал вопрос в форум.

А пока ждал ответов, решил разобраться с тем, как Виндоуз узнает о том, что делать с тем или иным расширением файла, буде он дабл-кликнут.

Выяснилось, что есть команды ASSOC и FTYPE

В первой надо прописать:

ASSOC .JAR=JARFILE

А во второй:

FTYPE JARFILE="C:\%system_root%\system32\java.exe -jar" "%1" %*

И -- lo & behold! -- все заработало.

Теперь при дабл-клике jar-файл корректно запускается на интерпретацию-исполнение и никаких танцев с искусственно слзданным bat не нужно.

Остается только выразить недоумение, почему в Windows GUI ассоциация расширений с командными строками не доделана (т.е., через диалог нет способа прописать строку, которая должна передаваться командному интерпретатору по дабл-клику) -- а приходится пользоваться неочевидным способом через ASSOC и FTYPE.

.
CaptainBlack
Маньяк
Сообщения: 2063
Зарегистрирован: 07 июл 2008, 11:58
Откуда: Россия

Re: Как в Windows запустить background task из командной

Сообщение CaptainBlack »

Unixоиды (хотя я и сам такой) почему то думают, что шелл в винде отстойный ... это не совсем так. На виндовых шеллах можно достаточно "прямо" сделать многие вещи и не хуже чем в UNIX. Я делал на CMD+WSH проекты которые решали многие бизнес-задачи, без написания и строки кода на чем нибудь "серьезном"... все работало годами, как часы...

а все начиналось с 4DOS/4NT...
Аватара пользователя
nemiga
Маньяк
Сообщения: 2425
Зарегистрирован: 02 сен 2006, 19:05
Откуда: Minsk -> Seoul -> Ottawa

Re: Как в Windows запустить background task из командной

Сообщение nemiga »

CaptainBlack писал(а):Unixоиды (хотя я и сам такой) почему то думают, что шелл в винде отстойный ... это не совсем так. На виндовых шеллах можно достаточно "прямо" сделать многие вещи и не хуже чем в UNIX. Я делал на CMD+WSH проекты которые решали многие бизнес-задачи, без написания и строки кода на чем нибудь "серьезном"... все работало годами, как часы...

а все начиналось с 4DOS/4NT...
Шелл-то сам по себе нормальный, но пользоваться шеллом в графической операционной системе кажется некошерным.

Т.е., идеологически правильным было бы по right-click дать возможность составления сценариев путем, например перетаскивания объектов и модификации их атрибутов.

Из продуктов Микрософта, пожалуй, только Офис достаточно последовательно проводит эту идеологию, позволяя фактически мышкой писать скрипты. А в Windows Explorer'e такой возможности нет.

.
CaptainBlack
Маньяк
Сообщения: 2063
Зарегистрирован: 07 июл 2008, 11:58
Откуда: Россия

Re: Как в Windows запустить background task из командной

Сообщение CaptainBlack »

nemiga писал(а):Шелл-то сам по себе нормальный, но пользоваться шеллом в графической операционной системе кажется некошерным.Т.е., идеологически правильным было бы по right-click дать возможность составления сценариев путем, например перетаскивания объектов и модификации их атрибутов.Из продуктов Микрософта, пожалуй, только Офис достаточно последовательно проводит эту идеологию, позволяя фактически мышкой писать скрипты. А в Windows Explorer'e такой возможности нет.
ИМХО, у любой грамотной multi-purpose ОС, обязан быть шелл, на котором можно программировать административные ну и прочие задачи.

MS в свое время написал махонькую утилитку auto-it, которая позволяла вручную заскриптовать практически любые манипуляции с GUE. Я ей тоже пользовался, когда нужно было заставить, GUI-софтины автоматом выполнять последовательности операций.
Аватара пользователя
alpax
Графоман
Сообщения: 10575
Зарегистрирован: 04 мар 2003, 17:39
Откуда: Richmond, BC

Re: Как в Windows запустить background task из командной

Сообщение alpax »

CaptainBlack писал(а):MS в свое время написал махонькую утилитку auto-it, которая позволяла вручную заскриптовать практически любые манипуляции с GUE. Я ей тоже пользовался, когда нужно было заставить, GUI-софтины автоматом выполнять последовательности операций.
Про AutoIt знаю. А что за auto-it от MS? Что-то не припоминаю.
CaptainBlack
Маньяк
Сообщения: 2063
Зарегистрирован: 07 июл 2008, 11:58
Откуда: Россия

Re: Как в Windows запустить background task из командной

Сообщение CaptainBlack »

alpax писал(а):
CaptainBlack писал(а):MS в свое время написал махонькую утилитку auto-it, которая позволяла вручную заскриптовать практически любые манипуляции с GUE. Я ей тоже пользовался, когда нужно было заставить, GUI-софтины автоматом выполнять последовательности операций.
Про AutoIt знаю. А что за auto-it от MS? Что-то не припоминаю.
сорри - не то запостил...найду ссылку - скину сюда
Ответить