CMD または BAT をサイレント モードで実行する
-
03-07-2019 - |
質問
CMD または .bat ファイルをサイレント モードで実行するにはどうすればよいですか?CMD インターフェイスがユーザーに表示されないようにしようとしています。
解決
StackOverflowの質問でバックグラウンドでバッチファイルを実行する方法を提案しました( DOSウィンドウが表示されない)
質問に答える必要があります。
ここにあります:
最初のスクリプトから、次の行で2番目のスクリプトを呼び出します。
wscript.exe invis.vbs run.bat %*
実際には、次のコマンドでvbsスクリプトを呼び出しています:
- [パス] \スクリプトの名前
- スクリプトに必要な他のすべての引数(
%*
)
その後、invis.vbsはでスクリプトを呼び出しますWindows Script Host Run()メソッド。これは次のものを取ります。
- intWindowStyle:0は「非表示ウィンドウ」を意味します
- bWaitOnReturn:falseは、最初のスクリプトが2番目のスクリプトの終了を待つ必要がないことを意味します
invis.vbsスクリプト全体の質問を参照してください:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
^
means "invisible window" ---|
Tammenのフィードバック後の更新:
DOSセッションで、バックグラウンドで別のスクリプトを起動する場合は、単純な / b
(前述の同じ質問)で十分な場合があります。
start / b second.bat
を使用して、最初のウィンドウを共有する最初のバッチファイルから非同期に2番目のバッチファイルを起動できます。
他のヒント
フレーズを含める
@echo off
batスクリプトの上部にあります。
高度な BAT から EXE コンバータを使用する http://www.battoexeconverter.com
これにより、バッチ ファイルを含む追加のバイナリを 1 つのスタンドアロンの完全にサイレントな EXE とそのフリーウェアに埋め込むことができます。
これは、DOSウィンドウを開かずにバッチファイルを実行するための最も簡単で最短のソリューションだと思います。コマンドセットを定期的に実行するようにスケジュールしたい場合、非常に気が散ることがあります。あなたのソリューションです。 VBSスクリプトを使用してバッチファイルを呼び出す...
Set WshShell = CreateObject("WScript.Shell" )
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0
Set WshShell = Nothing
上記の行をエディターにコピーし、ファイルを.VBS拡張子で保存します。 .BATファイルの名前とパスを適宜編集します。
Bat To Exe Converterを使用してこれを行います
http://download.cnet.com/ Bat-To-Exe-Converter / 3000-2069_4-10555897.html
(直接ダウンロードリンクを選択)
1-Bat to Exe Converterを開き、Batファイルを選択します。
2-[オプション]メニューで[非表示のアプリケーション]を選択し、コンパイルボタンを押します。
完了!
SilentCMD を試してください。これは、コマンドプロンプトウィンドウを表示せずにバッチファイルを実行する小さなフリーウェアプログラムです。
サイレントモードでコマンドプロンプトを実行する場合、単純なvbsコマンドがあります:
Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"
cmdでurlをサイレントモードで開きたい場合、コードは次のとおりです:
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("iexplore.exe http://otaxi.ge/log/index.php", 0)
'wait 10 seconds
WScript.sleep 10000
Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"
この方法が一番気に入っていると確信しています。以下のコードをコピーして、.vbsファイルに貼り付けます。そこからバッチファイルを呼び出します...ですので、最後の行を編集して、バッチファイルのパスと名前を指定してください(起動するファイルを含むか、実行する必要のあるアクションを実行する必要があります)
Const HIDDEN_WINDOW = 12
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
errReturn = objProcess.Create("C:\PathOfFile\name.bat", null, objConfig, intProcessID)
それは間違いなく私にとってはうまくいきました。コメントを歓迎します:)
このような仕事をするために RunApp を作成し、本番環境で使用しています。役に立てば幸いです。
以下のような設定:
ファイル:config.arg
:style:hidden
MyBatchFile.bat
arg1
arg2
代わりに runapp.exe
を起動します。