プログラムの起動後にコンソールを開いたままにせずに、バッチファイルからプログラムを実行するにはどうすればよいですか?


184

現時点では、バッチファイルは次のようになります。

myprogram.exe param1

プログラムは起動しますが、DOSウィンドウは開いたままです。どうすれば閉じることができますか?


3
マーシャルが投稿した回答に、承認された回答を変更する必要があります。
Rev1.0

回答:


163

exitキーワードを使用できます。これが私のバッチファイルの1つからの例です:

start myProgram.exe param1
exit

18
バッチファイルをダブルクリックするのではなく、インタラクティブにコンソールを使用している場合は、これはうまくいきません。通常exit、バッチファイルに入れる必要はほとんどありません。
ジョーイ

27
Win8でこのコマンドを試しました。異なるかどうかはわかりませんが、最初のパラメーターとしてウィンドウタイトルを指定する必要があることに注意してください。:私はそれをパトリックは述べた方法を実行するだろうというとき、それだけで、ウィンドウのタイトルとして「myprogram.exeという」で新しいコマンドプロンプトを開きますstart "VPN" "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"
アダムPlocher

9
コマンドにスペースが含まれていて、引用符で囲む場合、STARTは最初の引用符で囲まれたパラメーターをウィンドウ名として解釈し、次の2番目のパラメーターのみをコマンド名として解釈するため、引用符で囲まれたパラメーターを追加する必要があります。
DavidBalažic2017

259

startコマンドを使用して、バッチファイルがプログラムを待機しないようにします。「開始」の後に実行するプログラムの前に空の二重引用符を付けることを忘れないでください。たとえば、バッチコマンドからVisual Studio 2012を実行する場合は、次のようにします。

Start ""  "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

開始後の二重引用符に注意してください。


55
@SharkAlley適切な形式はstart <window name> <program name>
次のとおり

5
これが正解です。おかげで、空の二重引用符はまさに私が必要としたものです。
Richard

毎週実行するバックアップスクリプトがあり、それを毎週少しずつ変更して、a)プログラムを閉じ、b)データをバックアップし、c)プログラムを再起動してコマンドプロンプトを閉じようとしています。これでようやくコマンドプロンプトが閉じました(次のバックアップがトリガーされないようにしたので、そのコマンドプロンプトを閉じなければなりませんでした!!!)。
NobleUplift 2016

@NobleUplift:私にとってこれはうまくいきました..以下が正確な行です:Start "" "C:\ Program Files(x86)\ JetBrains \ IntelliJ IDEA 2016.2.5 \ bin \ idea64.exe"&
Xinus

53

STARTコマンドを見て、これを行うことができます。

START rest-of-your-program-name

たとえば、このバッチファイルはメモ帳が終了するまで待機します。

@echo off
notepad c:\test.txt

しかし、これはしません:

@echo off
start notepad c:\test.txt

31

自身の質問から:

start /b myProgram.exe params...

既存のDOSセッションからプログラムを起動すると機能します。

そうでない場合は、vbスクリプトを呼び出します

wscript.exe invis.vbs myProgram.exe %*

Windowsスクリプトホストファイル名を指定して実行()メソッドをとります。

  • intWindowStyle:0は「非表示ウィンドウ」を意味します
  • bWaitOnReturn:falseは、最初のスクリプトが2番目のスクリプトが完了するのを待つ必要がないことを意味します

これがinvis.vbsです。

set args = WScript.Arguments
num = args.Count

if num = 0 then
    WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
    WScript.Quit 1
end if

sargs = ""
if num > 1 then
    sargs = " "
    for k = 1 to num - 1
        anArg = args.Item(k)
        sargs = sargs & anArg & " "
    next
end if

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False

1
+1より簡単な方法があるはずですが、これが私にとってうまくいった唯一の答えです。
DNは

ありがとう-その/ bフラグはまさに私が探していたものでした。
ap 2014年

21

これが私がバッチファイルからJavaクラスを実行しようとしたときに私のために働いた唯一のものです:

start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm

start適切な構文に従って、プロジェクトに合わせてコマンドをカスタマイズできます。

Syntax
      START "title" [/Dpath] [options] "command" [parameters]

Key:
   title      : Text for the CMD window title bar (required)
   path       : Starting directory
   command    : The command, batch file or executable program to run
   parameters : The parameters passed to the command

Options:
   /MIN       : Minimized
   /MAX       : Maximized
   /WAIT      : Start application and wait for it to terminate
   /LOW       : Use IDLE priority class
   /NORMAL    : Use NORMAL priority class
   /HIGH      : Use HIGH priority class
   /REALTIME  : Use REALTIME priority class

   /B         : Start application without creating a new window. In this case
                ^C will be ignored - leaving ^Break as the only way to 
                interrupt the application
   /I         : Ignore any changes to the current environment.

   Options for 16-bit WINDOWS programs only

   /SEPARATE   Start in separate memory space (more robust)
   /SHARED     Start in shared memory space (default)

18

これを試してみてください。ウィンドウなしでプログラムを起動します。実際には1秒間点滅しますが、すぐに消えます。

start "name" /B myprogram.exe param1

4
"title"オプションが重要です。プログラムのパスにスペースが含まれている場合は、引用符で囲む必要がある"title"ため、失敗を回避するために追加する必要があります。
AD

1
メインウィンドウを閉じると、バックグラウンドプロセス 'myprogram.exe'も閉じます。
Aditya Gupta

14

「スペースの問題」とローカルの依存関係を解決する方法:

@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe

cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe

exit

これは質問に対する回答ではありません
jeb

2
本当ですが、それは私が抱えていた他の問題も解決する良い解決策になると思います。
Gilco、2015

2
私にとっての解決策でした。Dosウィンドウが開きますが、再び閉じ、ソリューションが機能します。反対票を理解していません(賛成票を投じました)
JoeFox

私もです。ソリューションが機能し、問題を解決する
Gilco

2

この質問に対する回答は既にたくさんありますが、重要なことを明確にするためにこれを投稿していますが、常にそうであるとは限りません:

Start "C:\Program Files\someprog.exe"

Start最初の引用符のセットがWindowsタイトルであると実際に想定しているため、一部のWindowsバージョンでは問題が発生する可能性があります。したがって、最初にコメントまたは空白のコメントを二重引用符で囲むことがベストプラクティスです。

Start "" "C:\Program Files\someprog.exe"

または

Start "Window Title" "C:\Program Files\someprog.exe"

0

GUIからこれを行う私のソリューション:

  1. 実行するプログラムへのショートカットを作成します。

  2. ショートカットのプロパティを編集します。

  3. TARGETフィールドをに変更します%COMSPEC% /C "START "" "PROGRAMNAME""

  4. RUNフィールドを最小化に変更します。

いいよ!それがどのように好きか見てください...

PS:プログラムパラメーターは、2つの最後の引用符の間に挿入できます。PROGRAMNAME文字列は、ファイル名、相対パスまたは絶対パスのいずれかになります-あなたは絶対パスに入れた場合、ドライブ文字とセミコロンを消去し、その後、この意志の仕事は、それに関係なく、どのような文字のホストコンピュータの割り当てをサムドライブ.. 。(あなたが同じフォルダにショートカットを配置し、プログラムのファイル名の前に置く場合も、PROGRAMNAME%CD%変数、パスは常に一致します。同じトリックをして使用することができますSTART INフィールド)。


0

このバッチファイルがスケジュールどおりに、または常に実行するものである場合。Windowsスケジュールツールを使用できますが、バッチファイルを起動したときにウィンドウが開きません。

開くにはTask Scheduler

  • スタート->実行/検索-> 'cmd'
  • タイプtaskschd.msc->入力

右側から、クリックCreate Basic Taskしてメニューに従います。

お役に立てれば。


0

これが私の好ましい解決策です。これは、同様の質問への回答から取得されます。

VBSスクリプトを使用してバッチファイルを呼び出します。

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing

上記の行をエディターにコピーし、ファイルを.VBS拡張子で保存します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.