40

私はスクリプトを言うことができます:

C:\foo.bsh

Windowsのrunコマンドでこのコマンドを実行できるようにしたい:

Start -> Run
Windows Key + R

「foo」のような小さなものを入力してリターンを押します。

ただし、コマンドプロンプトを表示したくありません。このスクリプトは、IDE の前処理を行います。IDE プロセスの存続期間中、cmd プロンプトを開いたくないのです。

私が試してみました:

1) 次の内容のバット ファイルを作成します。

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

2)bat_2_exe_converterを使用して上記のbatファイルをexeに変換します(cmdをサイレントにしません)

考え?

編集:これまでの解決策は、実際の cygwin シェルから入力するものを示唆しています。Windowsの実行コマンドに入力できる短いものを用意することで、より高速なソリューションを取得しようとしています。また、nohup command; exitボックスは自動的に強制終了されませんが、IDE プロセスを強制終了せずに手動で強制終了できます。run コマンドは、ショートカット (.lnk)、bat、exe を受け入れます。

4

7 に答える 7

43

cygwinの run.exe コマンドを試してみてください。これは大規模なインストールであり、Windows マシン用の完全な UNIX 環境です。にインストールしたとしc:\cygwin\ます。

ミステリーはありません。実行するだけでc:\cygwin\bin\run.exe <your command here>、DOS ウィンドウなしで実行できます。

任意の DOS ウィンドウから実行できます (スタート メニューから cmd.exe を実行します)。cygwin から実行する必要はありません。

簡単にするためにC:\cygwin\bin、 %PATH% env var ([マイ コンピューター] → [プロパティ] → [詳細設定] → [環境変数]) に追加します (Felipe Alvarez のコメントに感謝します)。

今、あなたはただ入力することができます

c:\cygwin\bin\run.exe "C:\foo.bsh"

Win-R で実行できるように、このコマンドを使用してスタート メニューにリンクを作成する必要があります。

runco​​mmand の man ページは次のとおりです。

$ 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)
于 2010-11-18T19:15:50.707 に答える
20

どちらでも使用できます...

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 Startup Files を使用します。これは、cygwin ターミナルを起動するときに依存する $PATH などを設定するという点で重要です。含めない場合、-lまたは--loginbash ビルトイン以外のものを呼び出そうとすると、「コマンドが見つかりません」というメッセージが表示されます。

2つの違いは、行うことの違いのようなものです...

bash script_to_interpret.sh

...と...

./executable_script.sh

...*nix で。前者は、bash を使用してスクリプトを解釈します。後者はスクリプトを実行し ( がある場合のみ)、その"shebang"chmod +x executable_script.shに従って解釈します。後者の方法は、ソースからコンパイルされた *nix バイナリのように、実行可能ファイルがスクリプトではない場合にも必要です。)

于 2013-06-20T03:06:35.177 に答える
10

解決策が見つからずしばらく悩んでいましたが、ようやく適切な組み合わせができました。

PATH に cygwin がある場合は、単純に次の操作を実行できます。
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

于 2011-04-15T23:09:08.253 に答える
4

スクリプトの実行中はターミナルを閉じることができないため、次のコマンドを試してください。

"nohup C:\foo.bsh; exit" 

このようにして、スクリプトはバックグラウンドで終了し、ターミナルから切り離されます。ターミナルが消えるように、スクリプトはすぐに終了する必要があります。このアプローチでもウィンドウが「フラッシュ」する可能性があると思いますが、結果は得られるものよりも優れているはずです。

于 2009-03-23T13:20:46.190 に答える
2

もう1つの不完全な可能性は、ショートカットを介してスクリプトを実行し、ショートカットの[実行]オプションを[最小化]に設定することです。

于 2009-03-23T13:27:18.810 に答える
0

cygwin をインストールしたディレクトリに移動します (私のマシンでは c:/cygwin64/bin です)。そこで単に「bash.exe」と入力します。

于 2016-08-31T14:05:41.660 に答える