実行時にコマンドプロンプトが表示されないWindowsバッチファイルを作成するにはどうすればよいですか?[複製]


58

コマンドラインから起動されるRedcarと呼ばれるruby gemをインストールしました。実行されると、終了するまでシェルをスチールするため、コマンドライン作業を続行するには新しいシェルウィンドウを作成する必要があります。私が使用しているシェルは、MySysGitのGITBashシェルです。

Redcarをショートカットとして起動することを意図したRedcar.batファイルを見つけましたが、BATファイルを起動するたびに追加のコマンドプロンプトウィンドウを開きたくないのです。

プロンプトが表示されずにBATを実行するにはどうすればよいですか?


1
良い質問のためにこの+1の答えを知っていたらいいのに。
スーパーシリアル

@Kyle同様の質問が superuser.com/questions/191149/how-to-execute-cmd-exe-silentlyで HSTARTに言及し、VBSファイルでも
HSTARTを

選択した回答を更新できますか?方法を知っていれば、それは可能かつ非常に簡単ですか..バッチファイル:行1:set var1=hello.txt行2:start "test" notepad.exe "%~dp0%var1%"
コディブラウン

::またはを使用します@REM。ソース:superuser.com/a/843754/101936
PHPst

回答:


38

できません-組み込みのコマンドプロンプトでバッチファイルを実行すると、バッチファイルが終了するまでウィンドウが開いたままになります。

何ができるやっていることは、バッチファイルを可能な限り迅速に終了していることを確認するための措置をとるです。可能な限り、バッチファイルを変更して、startコマンドでプログラムを実行します。デフォルトでstartは、プログラムの終了を待たずにすぐに戻るため、バッチファイルは実行を継続し、おそらくすぐに終了します。バッチファイルを最小化して実行するようにショートカットを変更すると、画面にウィンドウが表示されることなく、タスクバーのフラッシュのみが表示されます。

これに対する1つの注意点は、多くのスクリプトインタープリターであるコンソールモードプログラムを実行している場合、バッチファイルはプログラムが終了するまで待機し、使用startすると新しいコンソールウィンドウが生成されることです。この場合に必要なことは、コンソールベースのインタープリターではなく、Windowsベースのバージョンのインタープリターを実行することです- start不要です。Perlの場合、のwperl.exe代わりに実行しますperl.exe。Pythonでは、のpythonw.exe代わりになりpython.exeます。私がダウンロードした古いwin32 Rubyディストリビューションにはrubyw.exeがあり、同じことをするはずです。

最後の可能性は、サードパーティのツールを使用して、非表示のウィンドウでコマンドプロンプトを実行することです。私はそのようなことを聞​​いたことがありますが、それらを使用したことはありませんでしたので、特に指摘することはありません。


私の質問に答えてくれてありがとう。本当に面倒だったのは、プロンプトウィンドウが表示されたのではなく、プログラムが実行されている限り開いたままにしておく必要があったことです。これでフラッシュは完全に耐えられるようになり、それほど面倒ではなくなりました。rubyではなくrubywを実行するようにスクリプトを変更できるかどうかを確認します。
ジェイク

1
「python」と「pythonw」の違いを説明してくれてありがとう-最後に、コマンドプロンプトをバックグラウンドで使用せずに、Pythonウィンドウツールを実行する解決策を見つけました。
FP

「java.exe」と「javaw.exe」は同じです。
redbeam_

バッチコード自体ではありません。実際にコマンドプロンプト非表示にする方法については、同様にして、ここでQsの数があるsuperuser.com/questions/62525/...を superuser.com/questions/191149/how-to-execute-cmd-exe-silently
barlop

21

これは、DOSウィンドウを開かずにバッチファイルを実行する最も簡単で最短のソリューションであり、一連のコマンドを定期的に実行するようにスケジュールしたい場合は非常に邪魔になる可能性があるため、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ファイルを実行するだけで、魔法が起こります!


8

コマンドプロンプト内からSTART / MIN CMD.EXE / C mybatchfile.batを使用して別のバッチファイルを実行できます。

外部からcmdコンソールウィンドウが表示されますが、それを避けるために、プロパティを変更して最小化開始するショートカットファイルを作成できます。


2
Windowsの8.1では、このオプションは、プロパティである- > [ショートカット]タブ- > [ファイル名を指定して実行: - >最小化(デフォルトは「通常のウィンドウ」である)
PIX

5

これを行うには、プログラムBat To Exe Converterを使用して、バッチファイルを実行可能ファイルに変換します。

実行可能ファイルに変換するとき、可視性セクションにファイルを非表示アプリケーションとして実行するオプションがあります。したがって、実行すると、ウィンドウなしで実行されます。

exeへのバット


Webサイトでは、お使いのコンピューターで暗号キャプチャを「解決」する必要があります。ここでは、プログラムであるnofile.io/f/q4o8dauVQ4P/Bat_To_Exe_Converter.zipは
rluks

4

デニスウィリアムソンの回答を続けると、バッチファイルを編集して、START /B実行中のコマンドに追加(追加)できます。

たとえば、パテを実行し、同じ問題が発生したバッチファイル(余分なCMD)があるため、これを作成した方法は次のとおりです。

@ECHO OFF
START / B putty.exe -load name_of_my_config_file

完璧に機能しました。


4

これを試してみてください:

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.

3
コマンドプロンプトを開いている場合は動作する可能性がありますが、.batを使用しているときに、デスクトップでそれまたはそのショートカットをダブルクリックしています。このプログラムを起動するためにコマンドプロンプトが必要になるのを避けようとしています。
ジェイク

3

あなたの問題については明確ではありませんが、一部のバッチファイルでは、メインバッチファイルを起動することだけを目的とする「ダミー」を使用しています。

したがって、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:
 ...


1

あなたはまだすべてでコンソールウィンドウが表示されないことに興味があるなら、ここで私のために働いたstackoverflowのからソリューション(私の場合は、私は、レジストリには何も入れていないが、私は必要な場合)です。


0

/ bスイッチをパスの前に置くだけです。2番目のコマンドプロンプトは開きません。


0

これまでのところ、Indagoの答えは私にとって最良の解決策でした。VBSファイルを使用すると、スクリプトを介してバッチの機能を実行できるため、そもそもCMDウィンドウが表示されなくなります。ただし、いくつかの注意事項があります。

  1. バッチに管理者権限が必要な場合、VBSを呼び出す既存のバッチを作成または使用し、そのバッチを管理者として実行します。

  2. 目に見えないため、あなたがやろうとしていることが実際にあなたが望むように実行されているかどうかを見分けるのは難しいかもしれません。

とはいえ、統合する前に、最初にちょっとした模擬セットアップ/ユニットテストを行い、意図したとおりに機能することを確認します。


0

私は過去にcmdowを使用しましたが、それは私が望むもののために働いたようです。

次のオプションのいずれかを使用することをお勧めします。 CMDOW [window] /HID

/HID 指定されたウィンドウを非表示にします

CMDOW [window] /END

/END 指定されたウィンドウを閉じます

CMDOW [window] /CLS

/CLS ウィンドウを閉じるように丁寧に要求しました(一部のウィンドウはダイアログボックスを開く場合があります)

お役に立てれば。


-5

バッチファイルへのショートカットを作成し、それを右クリックし、をクリックしてPropertiesGeneralタブに移動し、というボックスをHiddenオンにApplyして、をクリックしますOK
ショートカットを開くと、非表示のバッチファイルが実行されます。


これは間違っています。ショートカット/バッチファイルを非表示にするだけで、ユーザーが望むのは目に見えないように実行するバッチファイルです。
ここにルートしないでください...
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.