コマンドラインから起動するRedcarというRuby gemをインストールしました。実行されると、シェルが終了するまでそれを盗みます。そのため、コマンドライン作業を続けるには新しいシェルウィンドウを作成する必要があります。私が使っているシェルは、MySysGitのGITBashシェルです。
ショートカットとしてRedcarを起動することを意図したRedcar.batファイルを見つけました、と私は思いますが、BATファイルを起動するたびに特別なコマンドプロンプトウィンドウを開くことはしたくないと思います。
プロンプトが表示されずにBATを実行する方法を教えてください。
できません - 組み込みのコマンドプロンプトでバッチファイルを実行しても、バッチファイルが終了するまでウィンドウは開いたままになります。
あなたができることができることは、バッチファイルができるだけ速く終了することを確認するためのステップを踏むことです。可能であれば、start
コマンドを使用して任意のプログラムを実行するようにバッチファイルを変更します。デフォルトでは、start
はプログラムが終了するのを待たずにすぐに戻るので、バッチファイルは実行を続け、おそらくは直ちに終了します。ショートカットを変更してバッチファイルを最小化して実行すると、ウィンドウが画面に表示されずにタスクバーが点滅するだけになります。
これに対する1つの注意点は、多くのスクリプトインタプリタであるコンソールモードプログラムを実行している場合、バッチファイルはプログラムが終了するのを待ち、start
を使用すると新しいコンソールウィンドウが生成されることです。この場合に必要なことは、コンソールベースのインタープリタではなく、Windowsベースのバージョンのインタープリタを実行することです - start
は不要です。 Perlの場合は、wperl.exe
の代わりにPerl.exe
を実行します。 Pythonでは、pythonw.exe
の代わりにpython.exe
です。私がダウンロードした古いwin32 Rubyディストリビューションはrubyw.exe
を持っています、それは同じことをするべきです。
最後の可能性は、隠されたウィンドウでコマンドプロンプトを実行するためにサードパーティ製のツールを使うことです。私はそのようなことを聞いたことがありますが、それらを使用したことは一度もありませんでした。
私はこれがDOSウィンドウを開かずにバッチファイルを実行するための最も簡単で最短の解決策だと思います、定期的に実行するコマンドのセットをスケジュールしたい時には非常に邪魔になるでしょう。 。 VBスクリプトを使用してバッチファイルを呼び出す...
Set WshShell = CreateObject("WScript.Shell" )
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0
Set WshShell = Nothing
上記の行をエディタにコピーして、ファイルに拡張子.VBSを付けて保存します。それに応じて.BATファイル名とパスを編集します。それからちょうど.vbsファイルを実行すると魔法が起こります!
あなたはコマンドプロンプト内からSTART/MIN CMD.EXE/C mybatchfile.batで別のバッチファイルを実行することができます。
外部からcmdコンソールウィンドウを表示しますが、それを回避するために、でショートカットファイルを作成することができますproperties最小化開始に変更しました。
これを行うには、プログラム Bat To Exe Converter を使用して、バッチファイルを実行可能ファイルに変換します。
実行可能ファイルに変換するときは、可視性のセクションにInvisibleアプリケーションとしてファイルを実行するオプションがあります。したがって、実行するとウィンドウなしで実行されます。
Dennis Williamsonの答えを続けて、あなたはバッチファイルを編集して、あなたが実行しているコマンドにSTART /B
を追加することができます。
例えば、私はPuTTYを実行するバッチファイルがあり、同じ問題(余分なCMD)を持っていたので、これは私がそれを書いた方法です:
@ ECHO OFF START/B PuTTY.exe -load name_of_my_config_file
それは完璧に機能しました。
これを試してみてください。
START /B batchfile
barlopでメモを追加しました
開始しますか。/Bの言う
B Start application without creating a new window. The
application has ^C handling ignored. Unless the application
enables ^C processing, ^Break is the only way to interrupt
the application.
私はあなたの問題に関してはっきりしていません、しかし、私のバッチファイルのいくつかで、私は唯一の目的がメインバッチファイルを起動することである「ダミー」を使います。
だからGO.BATがあります:
cmd /c go2.bat %1 %2 %3
exit
出口はコマンドプロンプトウィンドウを閉じますが、そうでなければ開いたままになります。
そしてGO2.BATは私が望む実際にバッチファイルの内容を持つでしょう。
@echo off
set userid=
if NOT [%1]==[] goto userid:
set /p userid=Enter USERID:
goto set_usr:
:userid
set userid=%1
shift
:set_usr
if %userid%==steven goto steven:
...
それでもコンソールウィンドウをまったく表示しないことに興味があるなら、 こちら は私のために働いたstackoverflowからの解決策です(私の場合私はしませんでした)レジストリに何かを入れますが、必要な場所に入れます。
/ bスイッチをパスの前に置くだけです。 2番目のコマンドプロンプトは開きません。
これまでのところ、Indagoの答え が私にとって最良の解決策です。 VBSファイルを使用すると、スクリプトを使用してバッチの機能を実行でき、そもそもCMDウィンドウが表示されなくなります。いくつか注意点があります。
バッチに管理者権限が必要な場合は、VBSを呼び出す既存のバッチを作成または使用して、そのバッチを管理者として実行します。
目に見えない状態で、あなたがやろうとしていることが実際にあなたが望むやり方で走っているかどうかを見分けるのは難しいかもしれません。
それにもかかわらず、私はそれを統合する前に、それがあなたが望む通りに動作していることを確かめるために最初に少し模擬セットアップ/単体テストをしたいと思います。
私は過去に cmdow を使用しましたが、それは私が欲しいもののためにうまくいったようです。
おそらく以下のオプションのうちの1つを使いたいでしょう:CMDOW [window] /HID
/HID
は指定されたウィンドウを隠します
CMDOW [window] /END
/END
は指定されたウィンドウを閉じます
CMDOW [window] /CLS
/CLS
は丁寧にウィンドウを閉じるように要求しました(ウィンドウによってはダイアログボックスが開く場合があります)
お役に立てれば。