Страница 1 из 1

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

Добавлено: 23 июн 2010, 22:21
nemiga
строки, ну, то есть, какой виндовый эквивалент & в командной строке:

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

> java -jar file.jar &
TIA

.

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

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

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

> java -jar file.jar &
TIA

.
>start /?

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

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

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

> java -jar file.jar &
TIA

.
>start /?

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

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

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

.

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

Добавлено: 24 июн 2010, 14:16
CaptainBlack
nemiga писал(а):[Пробовал start /B. Остается черное окно.

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

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

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

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

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

Vista, Sp2

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

Добавлено: 24 июн 2010, 18:33
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.

.

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

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

а все начиналось с 4DOS/4NT...

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

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

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

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

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

.

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

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

MS в свое время написал махонькую утилитку auto-it, которая позволяла вручную заскриптовать практически любые манипуляции с GUE. Я ей тоже пользовался, когда нужно было заставить, GUI-софтины автоматом выполнять последовательности операций.

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

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

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

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