バッチファイルを完全に隠して実行する
バッチファイル(.bat)をユーザーから何も見えないように実行する方法を探しています(ウィンドウもタスクバー名も.etc.)
そのために何かのプログラムを使いたいのではなく、もっとすっきりしたものを探しています。VBScriptを使った解決策を見つけたのですが、私もVBSを使うのはあまり好きではありません。
バッチファイル(.bat)をユーザーから何も見えないように実行する方法を探しています(ウィンドウもタスクバー名も.etc.)
そのために何かのプログラムを使いたいのではなく、もっとすっきりしたものを探しています。VBScriptを使った解決策を見つけたのですが、私もVBSを使うのはあまり好きではありません。
解決策 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 .
バッチファイルやコマンドファイル、その他のファイルを隠すには Windows XP に組み込まれた IExpress.exe
ユーティリティを使用して、バッチファイルから .EXE を作成します。IExpress
を使用する際には、非表示で実行するオプションにチェックを入れ、何も表示されないようにするためのすべてのボックスにチェックを入れてください。.exeを作成した後、あなたが選択した任意の実行コマンドフォルダにそれを配置し、あなたはそれが表示されることはありません。
あなたのバッチファイルは、1行に収まることができ、非常に多くの文字は、その後、ちょうどランダムなディレクトリに置かれたフォルダ内を右クリックしてショートカットを使用して、ウィザードの残りの部分をスキップし、最後に右クリックして、ちょうど作成されたショートカット上でプロパティをクリックして、ターゲットの下に、あなたが通常バットファイルに置くだろうものを入力します。そして、ボブスはあなたのおじさん!
賛成:
No Command Window
Ability to use an icon
Same Functionality of bat file
短所:
Limited to one line, so many characters
スクリプトを対話的にしないで 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")
VBScriptソリューションは好きではありません。
ダウンロードして nircmd.exe を %systemroot%\system32
フォルダにコピーして、バッチの最初の行に次のコマンドを追加します:
nircmd.exe win hide ititle "cmd.exe"
または、バッチのタイトルを title
コマンドで最初にカスタム化して、すべての cmd
ウィンドウを隠さないようにします。
ミニマム化して簡単に実行できます。
優秀な Bat To Exe Converter は、あなたの.bat
または.cmd
ファイルを.exe
ファイルに変換します。
それはシンプルなUIを持っています。また、アイコンを割り当てたり、パスワードを設定したり、他にもいくつかのオプションを設定することができます。
誰かが「サイレント」を実行するための7-8の方法のリストを作ったようです:
http://forums.techguy.org/dos-other/644932-solved-howto-run-batch-file.html
C/C++からのもう一つの方法は、CREATE_NO_WINDOWフラグを持つCreateProcess関数を使用することです。これは、ここには示されていない多くの余分な力を持っています。これは、system() や _spawn() ファミリーを置き換えるために必要な最低限のものです。
また、 AutoHotkey スクリプトを作成することもできます:
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
私は nircmd でこの方法で成功しました:
nircmd.exe win hide ititle "cmd.exe"
これで、.exeファイルができましたので、それをドブルクリックしてインストールすると、あなたの.batは完全に隠れて実行されます。
重複していたので、別の投稿からここに私の答えを追加し、私は今、あなたが隠しバッチファイルを実行することができますどのように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
すでに回答したにもかかわらず、ここでは別の方法を紹介します。ここでの違いは、バッチスクリプトはそれが実行されている間に自分自身を自己隠蔽することができるということです。ここではどのようにして使用することができます:
@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
エクスプローラのコンテキストメニューから呼び出されたバッチファイルのウィンドウを非表示にしたり、パラメータに引用符を付けたりする必要がありました。答えのどれも私のために働いたので、私は私自身の解決策を追加しています。
私はエクスプローラーのコンテキストメニューのためのレジストリ「コマンド」でこれを持っていました:
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.bat
は C:\Progra~1\myprogram.bat
として参照されなければなりません。8.3 のファイル名を見るには dir /x
を使用してください。
RunApp ](https://github.com/futurist/runapp)を作成し、本番環境でも使用しています。
file: config.arg
:style:hidden
MyBatchFile.bat
arg1
arg2
そして、代わりにrunapp.exe
を起動します。
私は同じ問題を抱えていましたが、それを考え出しました:
Shell("filehere" & "parametersforbatchfilehere", vbHidden)