当分の間、私のバッチファイルはこのように見えます:
myprogram.exe param1
プログラムは起動しますが、DOSウィンドウは開いたままです。どうやって閉じることができますか?
Exitキーワードを使用することができます。これは私のバッチファイルの1つからの例です:
start myProgram.exe param1
exit
バッチファイルがプログラムを待機しないようにするには、startコマンドを使用します。 "Start"の後に実行したいプログラムの前に空の二重引用符を入れることを忘れないでください。たとえば、Visual Studio 2012をバッチコマンドから実行する場合は、次のようにします。
Start "" "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"
開始後の二重引用符に注意してください。
STARTコマンドを見て、これを行うことができます:
START rest-of-your-program-name
たとえば、このバッチファイルはメモ帳が終了するまで待機します。
@echo off
notepad c:\test.txt
しかし、これはしません:
@echo off
start notepad c:\test.txt
私の 自身の質問から :
start /b myProgram.exe params...
既存のDOSセッションからプログラムを起動した場合に機能します。
そうでない場合は、vbスクリプトを呼び出します。
wscript.exe invis.vbs myProgram.exe %*
WindowsスクリプトホストのRun()メソッド は次のようになります。
これが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
これは私がバッチファイルから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)
あなたはこれを試すべきです。ウィンドウなしでプログラムを起動します。それは実際には一瞬点滅しますが、かなり早く消えます。
start "name" /B myprogram.exe param1
「スペース問題」とローカル依存関係を解決する方法:
@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe
cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe
exit
GUIからこれを行うための私の解決策:
実行したいプログラムへのショートカットを作成します。
ショートカットのプロパティを編集します。
TARGET
フィールドを%COMSPEC% /C "START "" "PROGRAMNAME""
に変更します。
RUN
フィールドをminimumに変更します。
準備完了あなたがそれをどのように好むか見てください...
PS:プログラムパラメータは、2つの最後の引用符の間に挿入できます。 PROGRAMNAME
文字列は、ファイル名、相対パス、または絶対パスのどちらでもかまいません。絶対パスを入力してドライブ文字とセミコロンを消去すると、ホストコンピュータが割り当てた文字に関係なく、これはサムドライブで機能します。 ..(また、ショートカットを同じフォルダーに置き、PROGRAMNAME
内のプログラムファイル名の前に%CD%
変数を付けると、パスは常に一致します。同じトリックをSTART IN
フィールドで使用することもできます)。
このバッチファイルがスケジュールどおりにまたは常に実行したいものである場合。あなたは、Windowsのスケジュールツールを使用することができますし、バッチファイルを起動したときにウィンドウに表示されません。
Task Scheduler
を開くには:
'cmd'
taskschd.msc
- > enterと入力右側から、Create Basic Task
をクリックしてメニューに従います。
お役に立てれば。
これが私の望ましい解決策です。それは 答え から同様の質問へと導かれます。
VBSスクリプトを使用してバッチファイルを呼び出します。
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing
上記の行をエディタにコピーして、ファイルに拡張子.VBSを付けて保存します。
私はこの問題を抱えていました、そして、以下は私のために働きました:
run myprogram.exe param1