web-dev-qa-db-ja.com

サイレントモードでのCMDまたはBATの実行

CMDまたは.batファイルをサイレントモードで実行するにはどうすればよいですか? CMDインターフェイスがユーザーに表示されないようにしています。

40

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番目のバッチファイルを起動できます。

36
VonC

フレーズを含める

@echo off

あなたのバットスクリプトの一番上に。

39

http://www.battoexeconverter.com からAdvanced BAT to EXE Con​​verterを使用します

これにより、バッチファイルに追加のバイナリを1つのスタンドアロンの完全にサイレントなEXEとそのフリーウェアに埋め込むことができます。

8
xfgjhxdfg

Bat To Exe Converterを使用してこれを行う

http://download.cnet.com/Bat-To-Exe-Converter/3000-2069_4-10555897.html
(選択 直接ダウンロードリンク

1-Bat to Exe Converterを開き、Batファイルを選択します。
2-オプションメニューで[非表示アプリケーション]を選択し、コンパイルボタンを押します。

できた!

6
rafael

これは、DOSウィンドウを開かずにバッチファイルを実行する最も簡単で最短のソリューションであり、一連のコマンドを定期的に実行するようにスケジュールしたい場合は非常に邪魔になる可能性があるため、DOSウィンドウがポップアップし続けると思います。 VBSスクリプトを使用してバッチファイルを呼び出す...

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing 

上記の行をエディターにコピーし、ファイルを.VBS拡張子で保存します。それに応じて、.BATファイル名とパスを編集します。

6
indago

SilentCMDを試してください。これは、コマンドプロンプトウィンドウを表示せずにバッチファイルを実行する小さなフリーウェアプログラムです。

5
Stephan Brenner

サイレントモードでコマンドプロンプトを実行する場合、単純な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"
3
saele

私はこの方法が一番好きだと確信しています。以下のコードをコピーして、.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)

それは間違いなく私のために働いた。コメントを歓迎します:)

2
nino

私は RunApp を作成し、そのような仕事をし、本番環境でもそれを使用しています。

以下のような設定:

ファイル:config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

代わりにrunapp.exeを起動します。

0
James Yang