Подтвердить что ты не робот

Cygwin - запустите script silenty из команды "run"

У меня script можно сказать:

C:\foo.bsh

Я хочу, чтобы иметь возможность запускать эту команду с помощью команды запуска Windows:

Start -> Run
Windows Key + R

и введите что-то маленькое, как "foo" и нажмите "Return".

Однако я не хочу, чтобы приглашение cmd было видимым. Этот script выполняет некоторую предварительную обработку для IDE. Я не хочу, чтобы приглашение cmd было открытым для жизни процесса IDE.

Я пробовал:

1) Создание файла bat со следующим содержимым:

c:\cygwin\bin\bash --login "C:\foo.bsh" (this fails because it keeps a cmd open)

2) Преобразование вышеуказанного файла bat в exe с использованием bat_2_exe_converter (не делает CMD беззвучным)

мысли?

РЕДАКТИРОВАТЬ: Решение пока предлагает что-то типа из реальной оболочки cygwin. Я пытаюсь получить более быстрое решение, имея что-то короткое, которое я могу ввести в команду запуска Windows. Кроме того, nohup command; exit не убивает автоматически, но я могу вручную убить его, не убивая процесс IDE. Команда run принимает ярлыки (.lnk's), bat's, exe's.

4b9b3361

Ответ 1

Попробуйте выполнить команду run.exe cygwin. Это большая установка, полная среда unix для вашей Windows-машины. Предположим, вы установили его в c:\cygwin\.

Откройте оболочку (bash) и введите man run.

Нет тайны, просто запустите c:\cygwin\bin\run.exe <your command here>, и у вас будет незавершенное выполнение окна.

Вы можете запустить его из любого окна DOS (запустите cmd.exe из меню "Пуск" ). Вам не нужно запускать его из cygwin.

Чтобы упростить, добавьте C:\cygwin\bin к вашему% PATH% env var (Мой компьютер → Свойства → Дополнительно → Переменные среды) (комментарий к Felipe Alvarez).

Теперь вы можете просто ввести

run "C:\foo.bsh"

Вот страница man runcommand:

$ man run
RUN(1)                             run 1.3.0                            RUN(1)

NAME
       run - start programs with hidden console window

SYNOPSIS
       run [ -p path ] command [ -wait ] arguments

       runcommand [ -p path ] [ -wait ] arguments

DESCRIPTION
       Windows  programs  are  either  GUI  programs or console programs. When
       started console  programs  will  either  attach  to an existing console
       or  create a new one. GUI programs can  never attach to an exiting con‐
       sole. There is no way to attach to an existing console but hide  it  if
       started as GUI program.

       run  will  do this for you. It works  as intermediate and starts a pro‐
       gram but makes the console window hidden.

       With -p path you can add path to the PATH environment variable.

       Issuing -wait as first program  argument will make run wait for program
       completition, otherwise it returns immediately.

       The  second  variant  is  for   creating wrappers. If the executable is
       named runcommand (eg runemacs), run will try  to start the program  (eg
       emacs).

EXAMPLES
       run -p /usr/X11R6/bin xterm

       run emacs -wait
       runemacs -wait

       run make -wait

AUTHORS
       Charles S. Wilson

       Harold L Hunt II

       Jehan Bing

       Alexander Gottwald

Version 1.3.0                    November 2005                          RUN(1)

Ответ 2

Вы можете использовать либо...

c:\cygwin\bin\bash -l /path/to/script_to_interpret.sh

... или...

c:\cygwin\bin\bash -l -c /path/to/executable_script.sh

Примечание: флаг -l сообщает bash, чтобы "действовать так, как если бы он был вызван непосредственно при входе", и используйте Bash Загрузочные файлы. Это важно в том, что он устанавливает ваши $PATH и другие вещи, на которые вы полагаетесь, когда запускаете терминал cygwin. Если вы не включаете -l или --login, вы получите команду "не найдена" при попытке вызвать что-либо, кроме встроенного bash.

Разница между 2 похожа на разницу между выполнением...

bash script_to_interpret.sh

... и...

./executable_script.sh

... in * nix. Первая интерпретирует script с помощью bash. Последний выполняет script (только если он имеет chmod +x executable_script.sh) и интерпретирует его в соответствии со строкой "shebang" . Последний метод также является тем, что вы хотите сделать, если ваш исполняемый файл вообще не является script, например, двоичный файл * nix, скомпилированный из исходного кода.)

Ответ 3

Я искал мне какое-то время, я не мог найти решение для этого, но я, наконец, получил правильное сочетание.

Вы можете просто сделать следующее, если у вас есть cygwin на вашем PATH:
run bash test.js

Если cygwin не на вашем пути, вы можете сделать это:
c:\cygwin\bin\run.exe -p /bin bash test.js

Если вы ищете больше контроля над созданным окном (максимизировать и т.д.), похоже, вы также можете использовать cygstart.

Источники:
- Невы ответили выше (хотя этого было недостаточно для меня лично, чтобы понять это)
- http://cygwin.com/ml/cygwin/2008-09/msg00156.html

Ответ 4

Поскольку терминал не может быть закрыт, пока ваш script все еще запущен, попробуйте выполнить команду:

"nohup C:\foo.bsh; exit" 

Таким образом, ваш script будет проигнорирован и отсоединен от терминала, и он должен быстро выйти, чтобы терминал ушел. Я думаю, что окно может все еще "вспыхивать" с помощью этого подхода, но результаты должны быть лучше, чем вы получаете.

Ответ 5

Я запускаю Cygwin64, а ссылка сервера xwin указывает на:

C:\cygwin64\bin\run.exe/usr/bin/bash.exe -l -c/usr/bin/startxwin.exe

Это создает значок И уведомление на панели задач. Мне это не нравится. Значок довольно бесполезен, уведомление имеет все ваши параметры меню из .XWinrc.

Итак... Я написал .vbs script, чтобы тихо запустить эту команду и отключить значок:

Set objShell = CreateObject("WScript.Shell")
objShell.Run("C:\cygwin64\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe"), 0

Ответ 6

Еще одна несовершенная возможность заключается в том, чтобы запустить script с помощью ярлыка и установить параметр "Выполнить" для "минимизации".

Ответ 7

Перейдите в каталог, в котором вы установили cygwin (на моей машине это c:/cygwin64/bin) Просто введите "bash.exe"