「コマンドウィンドウ」を起動せずにバッチファイルを実行する方法 [複製]


131

この質問にはすでに答えがあります:

Windows XPでは、「黒いウィンドウ」なしで、ショートカットを介してバッチ(.batまたは.cmd)ファイルを実行できますか?


6
batファイルの実行時にコマンドウィンドウが表示されないようにすることができますか?
エリック

6
はい。cmd.exeショートカットのプロパティを使用して、出力ウィンドウのデフォルトの色を簡単に変更できます。(はい、これは冗談です...)
トビーJ 14年

回答:


86

次をwscriptとして保存します。たとえば、「testing.bat」をバッチファイルの名前に置き換えた後、hidecmd.vbsを保存します。

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false

2番目のパラメータは、oShell.RunあるintWindowStyleプログラムのウィンドウの外観を示す値とゼロ値は隠されたウインドウのためのものです。

参照はこちらhttp://msdn.microsoft.com/en-us/library/d5fk67ky.aspx


3行目はstrArgs = "cmd / c FILEPATH \ testing.bat"でしょうか?
ダンZ

1
見えないままでコウモリを昇格モードで実行する方法はありますか?
ローレンススワート

.batこの方法を使用して管理者としてファイルを実行する方法は?
メフディDehghani

44

これは、シャジの答えを単純化したものです。次のようなVBScript(.vbs)スクリプトを使用してバッチスクリプトを実行できます。

'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

これにより、コマンドウィンドウが表示されずにバッチファイルが実行されます。


.batこの方法を使用して管理者としてファイルを実行する方法は?
メフディDehghani

@MehdiDehghaniプロパティ>セキュリティ>管理者として実行。それがexeまたはアプリでのみ機能する場合は、まあまあです。
テイラーズ

21

「Windows Scriptingを使用する」という回答(既に組み込まれているので私が最もよく考える)を展開するために、単一のラッパースクリプトを使用し、「実際の」バッチファイルの名前をパラメーターとして渡す方法を説明します。追加のパラメーターがバッチファイルに渡されます。

If WScript.Arguments.Count >= 1 Then
    ReDim arr(WScript.Arguments.Count-1)
    For i = 0 To WScript.Arguments.Count-1
        Arg = WScript.Arguments(i)
        If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
      arr(i) = Arg
    Next

    RunCmd = Join(arr)
    CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If

たとえば、上記のファイルをNoShell.vbsどこかに保存してから呼び出します:

NoShell.vbs c:\foo\my_batch_file.bat

最後に、.vbsファイルを理解していない場所(Visual Studioの "外部ツール"など)からこれを実行する場合は、vbsファイルをC:\Windows\System32\wscript.exe最初のパラメーターとして呼び出し、 2番目のバッチファイル。


6
上位2つの回答のいずれかを使用する必要があるため、作成する新しいbatファイルごとに新しいvbsファイルを作成するというアイデアと概念が嫌いな人にとって、これは完璧なソリューションです。複数のvbsファイルの代わりに、複数のショートカットがあります。新しいbatファイルごとに、vbsファイルのショートカットを作成し、右クリックして、プロパティ>ショートカットタブを選択し、ターゲットボックスに、上記のように既に存在するパスの後にbatファイルのパスを入力しますこれは、ショートカットがvbsファイルと同じ場所にない場合:"C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat
ロロ14

batファイルのファイルパスにスペースがある場合、vbsファイルへのショートカットを介してどのように呼び出すことができますか?例:"C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat。パスに何をしようとしても、すべてを二重引用符で囲み、スペースの代わりに%20、またはこれら2つの組み合わせを使用しても、何も機能しません。ファイルが見つからないか、何も起こらないというエラーメッセージが表示されます。これは、ユーザーのエラー、ショートカットのターゲットフィールドのWindowsの制限、またはスペースを含むファイルパスを適切に処理しないvbsスクリプトの問題が原因ですか?
ロロ14

@Rolo入力パラメーターのいずれかにスペースがある場合、引用符で囲まれるようにスクリプトを更新しました。したがって、バッチファイルへのパスを呼び出すときに引用符で囲む必要がある場合、それは単一の引数と見なされ、呼び出される前に再ラップされます。
トビーJ

9

ショートカットのプロパティを変更して、最小化して実行できます。

完全に目に見えない状態で実行するには、Windows Scriptingなどの何かが必要になります。


1
あなたの最初の提案は、私がいつもやってきた方法です。
マルティノー

8

'/ B'オプションでstartを使用します。例えば:

@echo off
start /B go.bat

25
start /b新しいコンソールを作成する代わりに、現在割り当てられているコンソールでプログラムを実行します。バッチはcmdで実行する必要があるので、とにかく新しいものを取得します(これにより[サプライズ]、コンソールが開きます)。
ジョーイ

@Joeyはい。ただし、これはシェル実行(SYSTEMC / C ++など)を通じて他のアプリケーションからバッチファイルを起動する場合に非常に便利です。
トマーシュザト

1
@TomášZato:その場合、バッチファイルを直接呼び出すことができます。または、プロセスの生成に使用するものが最初にシェルを作成しない場合は、を使用しますcmd /c foo.cmdstartこれらのシナリオでは絶対に使用する必要はありません。私は、をsystem支持して使用すべきではないと主張しCreateProcessます。バッチファイルを起動することで、すでに1つのプラットフォームに依存しているので、ジョブに適したツールを使用することもできます。
ジョーイ

@Joeyこれまで聞いたことのない束に感謝しcmd /cます。cmdのコマンドは、私は私の場合には必要なものですが、別のバッチファイルを実行するバッチファイルについて、私がこれまでに見つかったすべてのstackexchange回答、...起動を使用するために、トップの答えを持っている
T_D

start /b go.bat 新しいコンソール(conhost.exeのインスタンス、またはWindows 7より前のcsrss.exeのスレッド)割り当てられません。ただし、同じコンソールに接続されているcmd.exeの新しいインスタンスを使用してバッチスクリプトが実行されるため、混乱を招きます。シェルの両方のインスタンスは、通常は交互に、コンソールからの入力を読み取るために競合します。2番目のインスタンスで待機するために/w(たとえばstart /b /w go.bat)が必要です。これは、を使用するcmd /c場合の使用に似ていsystemます。また、を呼び出している場合はCreateProcessgo.bat直接実行します。の必要はありませんcmd /c
エリック

6

無料のGPLオープンソース「隠れたプロセスの作成」

http://www.commandline.co.uk/chp/

Microsoft Security Essentials、およびおそらく他のほとんどのウイルス/マルウェアスキャナーは、実行可能ファイルchp.exeをウイルスとして扱います。これは、指定したプログラムがウィンドウまたはタスクバーボタンを表示しないようにするためです。

それはウイルスではありません。たとえば、ターゲットプロセスがタスクマネージャーに表示されるのを隠しません。そしてもちろん、ソースコードが含まれているので、あなたはそれが非常に小さく、あなたが与えるどんなプログラムでも実行する以外何もしないことがわかります。

含まれているchp.exeが実際にそのソースからビルドされたことを信頼する必要さえありません。先に進み、付属のchp.exeを破棄し、ソースから独自にコンパイルすることができます。そうするために必要なツールはすべて無料でダウンロードできます。


.batまたは.cmdファイルへのショートカットを作成し、ショートカット、プロパティ、ショートカットタブ、実行:最小化を右クリックすることもできます。次に、スケジュールされたタスクで、.bat / .cmdファイルの代わりにショートカットを直接使用します。これにより、ウィンドウがポップアップしなくなりますが、タスクバーボタンは表示されたままです。


6

AutoItなどのウィンドウスクリプトを使用できます。

例として、これをAutoItスクリプトエディタに書き込むだけです。とても簡単です

Run("C:\test\batchfile.bat", "", @SW_HIDE)

ループで実行したい場合は、

$x=0
Do
 Run("C:\test\batchfile.bat", "", @SW_HIDE)
 Sleep(5000)
Until $x = 1

.exeとしてコンパイルします-これで完了です。


同様に、AutoHotkeyで

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide 

5

ヒドゥンスタートを使用 (20ドルの費用)

非表示の開始-コンソールウィンドウまたはUACプロンプトなしでアプリケーションとバッチファイルを実行する

コンソールアプリケーションとバッチファイルは、Windowsの起動時またはスケジュールで定期的に実行されます。これの主な不都合は、各アプリケーションが画面上でちらつくコンソールウィンドウを開くことです。Hidden Start(またはHstart)は、バックグラウンドでウィンドウなしでコンソールアプリケーションとバッチファイルを実行したり、Windows 7およびVistaでUAC特権の昇格を処理したり、複数のコマンドを並列または同期で開始できるようにする軽量コマンドラインユーティリティです。

ここに画像の説明を入力してください


これは非常にうまく設計された便利なアプリケーションです。
教祖ジョシュ

5

特別なプログラムを使用しないシンプルなソリューション。

  1. 実行するバッチファイルを作成してテストします。
  2. ショートカットを作成します。
  3. ショートカットのプロパティを編集します。[ショートカット]タブで、[最小化して実行]を選択します。ホットキーを割り当てれば、完了です!

幸運を!


7
これは、OPの問題の解決策ではありません。違いがあります最小化非表示は
nixda

ショートカットを変更して適切なアイコンを使用する場合、タスクバーの最小化されたスプラッシュは、実際に何かが始まっていることを示す良いお知らせです。
誰が

それは私の問題に対する素晴らしくきれいな解決策です!ありがとうございました!
dmitry_romanov

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