これはWindowsのバッチファイルです。
ここに私の.batファイルがあります
@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
"C:\ThirdParty.exe"
これは、「ThirdParty」アプリケーションの実行中に.batファイルがコマンドウィンドウを開いたままにすることを除いて、正常に機能します。
コマンドウィンドウを閉じる必要があります。
アプリケーションにショートカットを使用しますが、最初にこのコピーコマンドを実行できる必要があります(実際にアプリケーションに使用するデータベースとサーバーを変更します)。
ThirdPartyアプリケーションでは、ユーザーがdbまたはアプリケーションサーバーのソースを変更することはできません。
ユーザーがテスト環境から本番環境に変更できるようにするためにこれを行っています。
start
を使用するとうまくいきます:
@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
start C:\ThirdParty.exe
編集:[OK]、よく見ると、start
は、引用符で囲まれている場合、最初のパラメーターを新しいウィンドウタイトルとして解釈するようです。したがって、ThirdParty.exeへのパスを引用する必要がある場合は、タイトル文字列も指定する必要があります。
例:
:: Title not needed:
start C:\ThirdParty.exe
:: Title needed
start "Third Party App" "C:\Program Files\Vendor\ThirdParty.exe"
.vbs
このコードのファイル:
CreateObject("Wscript.Shell").Run "your_batch.bat",0,True
この .vbs
は実行されますyour_batch.bat
非表示。
私にとってはうまくいきます。
これを試して:
@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
start C:\ThirdParty.exe
exit
素晴らしいヒント。 Javaプログラムも実行しているバッチファイルで動作します。
start javaw -classpath "%CP%" main.Main
スクリプト言語を使用していない限り、start
を使用しても問題ありません。幸いなことに、Python-pythonw.exe
の代わりに python.exe
:
:: Title not needed:
start pythonw.exe application.py
引用符が必要な場合は、次を実行します。
:: Title needed
start "Great Python App" pythonw.exe "C:\Program Files\Vendor\App\application.py"
あなたは私の silentbatch プログラムを試すことに興味があるかもしれません。これは.bat
/.cmd
スクリプトを実行し、コマンドプロンプトウィンドウの作成を完全に抑制します表示されてから消えます)、オプションで指定されたファイルに出力を記録します。
ウィンドウを非表示にするVBSスクリプトを作成できます。
Set WshShell = WScript.CreateObject("WScript.Shell")
obj = WshShell.Run("""C:\Program Files (x86)\McKesson\HRS
Distributed\SwE.bat""", 0)
set WshShell = Nothing
次に、バッチファイルを実行するのではなく、スクリプトを実行します。
私はネイティブにそれを行う良い方法を実際に見つけていないので、私は hstart というユーティリティを使用するだけです。よりきれいな方法があれば、それはいいことです。
または、次を使用できます。
Start /d "the directory of the executable" /b "the name of the executable" "parameters of the executable" %1
%1がファイルの場合、実行可能ファイルに渡されます。たとえば、notepad.exe foo.txt
の%1は "foo.txt"です。
開始コマンドの/b
パラメーターはこれを行います。
新しいコマンドプロンプトウィンドウを開かずにアプリケーションを起動します。 CTRL+C アプリケーションが有効にしない限り、処理は無視されます CTRL+C 処理。つかいます CTRL+BREAK アプリケーションを中断します。
まさに私たちが望むものです。
Batch2Exe http://www.f2ko.de/programs.php?lang=en&pid=b2e を使用して、バッチファイルを実行可能ファイルにコンパイルします。 「非表示ウィンドウ」オプションを使用します。
これを使用してください、上記は動作しません。 Windows Server 2003でテストしました。
@echo off
copy "C:\Remoting.config-Training" "C:\Remoting.config"
Start /I "" "C:\ThirdParty.exe"
exit
.exeファイルを実行する.batファイルのコマンドウィンドウをできるだけ早く終了するには、実行するファイルの前に@start
行を使用します。以下に例を示します。
(insert other code here)
@start executable.exe
(insert other code here)
@start executable.exe
で他のコードを使用する必要はありません。
Windows APIを使用して、新しいプロセス、コンソールアプリケーションを開始し、その「黒い」ウィンドウを非表示にすることができます。これはプロセスの作成時に行うことができ、「黒い」ウィンドウをまったく表示しないようにします。
CreateProcess 関数では、dwCreationFlags
パラメーターに CREATE_NO_WINDOW フラグを含めることができます。
The process is a console application that is being run
without a console window. Therefore, the console handle
for the application is not set. This flag is ignored if
the application is not a console application
このメソッドを使用して hide-win32-console-window実行可能ファイル と ソースコード へのリンクを次に示します。
hide-win32-console-window
は Jamesdlinのsilentbatchプログラム と似ています。
未解決の質問があります:ウィンドウが存在しない場合、プログラムの出力をどうしますか?例外が発生したらどうしますか?出力を破棄するのは良い解決策ではありません。 hide-win32-console-window
は、匿名パイプを使用して、プログラムの出力を現在のディレクトリに作成されたファイルにリダイレクトします。
batchscript_starter.exefull/path/to/application[arguments to渡す]
batchscript_starter.exe c:\Python27\python.exe -c "import time; print('prog start'); time.sleep(3.0); print('prog end');"
出力ファイルは、pythonコマンドからの出力とともに、python.2019-05-13-13-32-39.log
という名前の作業ディレクトリに作成されます。
prog start
prog end
batchscript_starter.exe C:\WINDOWS\system32\cmd.exe /C dir .
出力ファイルは、CMDからの出力とともにcmd.2019-05-13-13-37-28.log
という名前の作業ディレクトリに作成されます。
Volume in drive Z is Storage
Volume Serial Number is XXXX-YYYY
Directory of hide_console_project\hide-win32-console-window
2019-05-13 13:37 <DIR> .
2019-05-13 13:37 <DIR> ..
2019-05-13 04:41 17,274 batchscript_starter.cpp
2018-04-10 01:08 46,227 batchscript_starter.ico
2019-05-12 11:27 7,042 batchscript_starter.rc
2019-05-12 11:27 1,451 batchscript_starter.sln
2019-05-12 21:51 8,943 batchscript_starter.vcxproj
2019-05-12 21:51 1,664 batchscript_starter.vcxproj.filters
2019-05-13 03:38 1,736 batchscript_starter.vcxproj.user
2019-05-13 13:37 0 cmd.2019-05-13-13-37-28.log
2019-05-13 04:34 1,518 LICENSE
2019-05-13 13:32 22 python.2019-05-13-13-32-39.log
2019-05-13 04:55 82 README.md
2019-05-13 04:44 1,562 Resource.h
2018-04-10 01:08 46,227 small.ico
2019-05-13 04:44 630 targetver.h
2019-05-13 04:57 <DIR> x64
14 File(s) 134,378 bytes
3 Dir(s) ???,???,692,992 bytes free
Target
フィールド:
C:\batchscript_starter.exe C:\WINDOWS\system32\cmd.exe /C C:\start_wiki.bat
Start in
フィールドで指定されたディレクトリは、出力ファイルを保持します。
別のユーザーで実行してください。これがWindowsボックスであると仮定して、スケジュールされたタスクのユーザーアカウントを作成します。そのユーザーとして実行します。コマンドプロンプトは、現在ログインしているユーザーに対してのみ表示されます。
これを使用して、C#からcmdファイルを開始しました。
Process proc = new Process();
proc.StartInfo.WorkingDirectory = "myWorkingDirectory";
proc.StartInfo.FileName = "myFileName.cmd";
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForExit();