2009-10-29 12:42:48 +0000 2009-10-29 12:42:48 +0000
144
144

バッチファイルを完全に隠して実行する

バッチファイル(.bat)をユーザーから何も見えないように実行する方法を探しています(ウィンドウもタスクバー名も.etc.)

そのために何かのプログラムを使いたいのではなく、もっとすっきりしたものを探しています。VBScriptを使った解決策を見つけたのですが、私もVBSを使うのはあまり好きではありません。

回答 (23)

122
122
122
2009-10-29 16:29:10 +0000

解決策 1:

この一行をファイルに保存する invisible.vbs:

CreateObject(“Wscript.Shell”).Run “”“ & WScript.Arguments(0) & ”“”“ 0, False

プログラムやバッチファイルを目に見えないように実行するには次のようにします。 Arguments(0) & ”“”“”, 0, False

プログラムやバッチファイルを目に見えないように実行するには、次のようにします。 bat"

また、引数のリストをパスオン/リレーできるようにするには、二重引用符を二つだけ使用してください

CreateObject(“Wscript.Shell”).Run “” & WScript.Arguments(0) & “ Arguments(0) & ”“, 0, False

例: Invisible.vbs "Kill.vbs ME.exe"

解決策 2:

コマンドラインツールを使用して、プロセスを静かに起動します : Quiet , hidecon または hideexec .

29
29
29
2012-06-29 21:06:44 +0000

バッチファイルやコマンドファイル、その他のファイルを隠すには Windows XP に組み込まれた IExpress.exe ユーティリティを使用して、バッチファイルから .EXE を作成します。IExpressを使用する際には、非表示で実行するオプションにチェックを入れ、何も表示されないようにするためのすべてのボックスにチェックを入れてください。.exeを作成した後、あなたが選択した任意の実行コマンドフォルダにそれを配置し、あなたはそれが表示されることはありません。

10
10
10
2009-10-29 12:48:03 +0000

使用 Cmdow は、NT4/2000/XP/2003用のWin32コマンドラインユーティリティで、ウィンドウをリストアップ、移動、サイズ変更、名前変更、非表示/非表示、無効化/有効化、最小化、最大化、復元、アクティブ/非アクティブ化、クローズ、殺害などを可能にします。

10
10
10
2013-01-13 03:36:21 +0000

あなたのバッチファイルは、1行に収まることができ、非常に多くの文字は、その後、ちょうどランダムなディレクトリに置かれたフォルダ内を右クリックしてショートカットを使用して、ウィザードの残りの部分をスキップし、最後に右クリックして、ちょうど作成されたショートカット上でプロパティをクリックして、ターゲットの下に、あなたが通常バットファイルに置くだろうものを入力します。そして、ボブスはあなたのおじさん!

賛成:

No Command Window
 Ability to use an icon
 Same Functionality of bat file

短所:

Limited to one line, so many characters
9
9
9
2009-10-29 12:49:03 +0000

スクリプトを対話的にしないで at job で実行します:

at 11:00 script.bat

もう一つの解決策は、Python のようなものをインストールすることを気にしないのであれば、単にスクリプトを作成して pythonw (GUI 操作のためのリンク版) で実行することができます。グラフィカルなAPIを使っていないので、ウィンドウは表示されません。単にos.system()の呼び出しを使えば、コマンドラインに文字列を打ち込むのと同じなので、バッチスクリプトを真似してくれます。

例:

import os

os.system("tasklist > C:\tasks.txt")
os.system("ipconfig /all > C:\netinfo.log")
7
7
7
2014-05-12 08:25:28 +0000

VBScriptソリューションは好きではありません。

ダウンロードして nircmd.exe %systemroot%\system32 フォルダにコピーして、バッチの最初の行に次のコマンドを追加します:

nircmd.exe win hide ititle "cmd.exe"

または、バッチのタイトルを title コマンドで最初にカスタム化して、すべての cmd ウィンドウを隠さないようにします。

7
7
7
2009-10-29 15:54:30 +0000

ミニマム化して簡単に実行できます。

6
6
6
2013-01-09 20:57:35 +0000

Windows7を使用すると、「スケジュールされたタスク」コントロールパネルを使用して、指定されたパーミッションでバックグラウンドで実行されるバッチファイルを、目に見えない形で、さらには「SYSTEM」アカウントとしてスケジュールすることができます。以下のスクリーンショットを参照してください。

さらに、機能はそれほど多くはありませんが、コマンドラインから「/interactive」オプションなしで「AT.exe」コマンドを使用して、このような目に見えないバッチスクリプトタスクを作成することもできます。

5
5
5
2016-10-30 13:15:17 +0000

優秀な Bat To Exe Converter は、あなたの.batまたは.cmdファイルを.exeファイルに変換します。

それはシンプルなUIを持っています。また、アイコンを割り当てたり、パスワードを設定したり、他にもいくつかのオプションを設定することができます。

4
4
4
2011-01-26 19:38:48 +0000

誰かが「サイレント」を実行するための7-8の方法のリストを作ったようです:

http://forums.techguy.org/dos-other/644932-solved-howto-run-batch-file.html

4
4
4
2017-06-19 08:27:15 +0000

C/C++からのもう一つの方法は、CREATE_NO_WINDOWフラグを持つCreateProcess関数を使用することです。これは、ここには示されていない多くの余分な力を持っています。これは、system() や _spawn() ファミリーを置き換えるために必要な最低限のものです。

4
4
4
2017-04-16 14:03:20 +0000

また、 AutoHotkey スクリプトを作成することもできます:

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
3
3
3
2014-09-24 17:58:35 +0000

私は nircmd でこの方法で成功しました:

  1. リンク からnircmd.exeをダウンロードする 2. .batファイルを作成する 3. .batファイルの最初の行は次のようにします: nircmd.exe win hide ititle "cmd.exe"
  2. 5. “general "タブで "create autoextract file "ボックスにチェックを入れてください
  3. "advance "タブで "autoextract "ボタンを選択してください
  4. 新しいウィンドウがあり、"mode "タブを選択してオプションを選択してください。"タブ「更新」を選択し、オプション「既存のファイルを上書き」を選択します。general "タブを選択し、必要に応じて抽出先フォルダを定義し、"Excecute after extraction "ボックスに.batが抽出されるフルパスを記入してください。例:もし、抽出先フォルダを次のように定義したら、"c:\windows "と書きます。"c:\windows "と定義すると、抽出後に実行するフルパスは "c:\windowsfile.bat” (あなたの.batの名前がfile.batの場合)
  5. click accept on all windows

これで、.exeファイルができましたので、それをドブルクリックしてインストールすると、あなたの.batは完全に隠れて実行されます。

2
2
2
2016-01-30 16:44:14 +0000

重複していたので、別の投稿からここに私の答えを追加し、私は今、あなたが隠しバッチファイルを実行することができますどのように17の異なる答えがあるので、ここでこの解決策を見ていません。私は、近い将来、どこかの時点でそのポスト上の私の答えを削除します。

バッチロジックとコマンドが入ったバッチスクリプトを作成し、拡張子が.VBSの新しいファイルを作成し、以下のロジック(私が提供した例)を使用して、ちょうどあなたの.CMDまたは.BATファイルへのフルパスをPING -t <IPAddress>などでプラグインしています。

以下の例のロジックでは C:\Folder\BatchFileName.cmd を指定していますが、今手動で実行しているコマンドなどのバッチスクリプトを指すように変更してください。

.VBSファイルを保存して、Task Scheduler Problems scheduling a task on windows7 でスケジュールして、必要に応じて無期限で実行するようにしてください。

それ以外の場合は、必要に応じてそれを指すバッチファイルに入れた無限の.VBSコマンドを実行するために、PINGファイルをダブルクリックするだけです。

NOTE:私はこれが私がからこのスクリプトロジックを得た場所であると信じていますが、それはあなたがここで必要とするのと同じ目的のために確実に動作しますバッチファイルが実行されたときにコマンドウィンドウが隠されていることを確認することです サーバーの障害ソース _

サンプルVBSスクリプト実行コマンドラインのバッチはCMDウィンドウを隠す

Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Folder\BatchFileName.cmd" & Chr(34), 0
Set WinScriptHost = Nothing
2
2
2
2012-10-12 07:16:50 +0000
  • (いくつかはオプションが豊富なものもあります)すぐに使えるスクリプトと、すべてのコマンドラインを使って、外部ツールを使わずにバッチで隠れたプロセスを起動する方法をコンパイルしました。
2
2
2
2017-03-09 18:01:08 +0000

すでに回答したにもかかわらず、ここでは別の方法を紹介します。ここでの違いは、バッチスクリプトはそれが実行されている間に自分自身を自己隠蔽することができるということです。ここではどのようにして使用することができます:

@echo off
call getCmdPid
call windowMode -pid %errorlevel% -mode hidden

echo this should be written into log despite the cmd window is hidden>log
echo ending the log>>log
exit
1
1
1
2011-07-02 09:04:44 +0000

特別なことをする必要はありません。

Windowsサービスからバッチファイルを実行している場合、サービスの「サービスがデスクトップと対話することを許可する」オプションを有効にしない限り、バッチファイルはデフォルトで非表示になっているはずです。

1
1
1
2010-06-14 14:11:34 +0000
cmdow /run /hid "file.extention" arg1 "arg 2"
0
0
0
2018-05-05 10:39:45 +0000

エクスプローラのコンテキストメニューから呼び出されたバッチファイルのウィンドウを非表示にしたり、パラメータに引用符を付けたりする必要がありました。答えのどれも私のために働いたので、私は私自身の解決策を追加しています。

私はエクスプローラーのコンテキストメニューのためのレジストリ「コマンド」でこれを持っていました:

cmd /c C:\mypath\myprogram.bat "%1"

だからそれを取り替えるために私はこれのようなvbsを作成しなければなりませんでした:

WScript.CreateObject ("WScript.shell").run "cmd /c C:\mypath\myprogram.bat """ & WScript.Arguments(0) & """", 0, False
wscript "C:\mypath\myscript.vbs" "%1"

C:\mypath\myscript.vbsのような場所で保存し、レジストリでそれをこのように呼びます:

&001

.batパスがスペースを持つことができないことに注意して下さい、従って8.3ファイル名とそれを取り替えて下さい。ですから、例えば C:\Program Files\myprogram.batC:\Progra~1\myprogram.bat として参照されなければなりません。8.3 のファイル名を見るには dir /x を使用してください。

0
0
0
2018-06-21 08:15:59 +0000

RunApp ](https://github.com/futurist/runapp)を作成し、本番環境でも使用しています。

file: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

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

0
0
0
2013-06-07 20:50:58 +0000

私は同じ問題を抱えていましたが、それを考え出しました: Shell("filehere" & "parametersforbatchfilehere", vbHidden)

0
0
0
2012-12-17 17:03:50 +0000

私はこれを理解しようとし始めましたが、一度も成功しませんでした。これは私が得たのと同じくらい近かった:

@echo off
if not defined PIL (
    set PIL=1
    start /min "" %~0
    exit /b
)
TITLE Hello World
echo Hello world!
pause>nul
-1
-1
-1
2014-08-15 23:36:30 +0000

これはwindows 8(おそらく他の人)のために動作します

  1. 通常のバッチファイルを作成します。バッチファイルへのショートカットを作成します。ショートカットを右クリックしてください。レイアウトをクリック
  2. “Let system position window "のチェックを外す
  3. set left position tp -1000
  4. applyをクリック
  5. ショートカットをクリックすると実行されますが、あなたはそれを見ることはありません。)