私は、ユーザーに見えるものなしでバッチファイル(.bat)を実行する方法を探しています(ウィンドウもタスクバー名もありません。など)。
私はそれをするために何らかのプログラムを使いたくありません、私は何かもっときれいなものを探しています。VBScriptを使用するソリューションを見つけましたが、 VBSの使用もあまり好きではありません。
私は、ユーザーに見えるものなしでバッチファイル(.bat)を実行する方法を探しています(ウィンドウもタスクバー名もありません。など)。
私はそれをするために何らかのプログラムを使いたくありません、私は何かもっときれいなものを探しています。VBScriptを使用するソリューションを見つけましたが、 VBSの使用もあまり好きではありません。
回答:
解決策1:
この1行のテキストをファイルとして保存しますinvisible.vbs
。
CreateObject( "Wscript.Shell")。Run "" ""&WScript.Arguments(0)& "" ""、0、False
プログラムまたはバッチファイルを非表示で実行するには、次のように使用します。
wscript.exe "C:\ Wherever \ invisible.vbs" "C:\ Some Other Place \ MyBatchFile.bat"
引数のリストを渡す/リレーできるようにするには、2つの二重引用符のみを使用します
CreateObject( "Wscript.Shell")。Run ""&WScript.Arguments(0)& ""、0、False
例: Invisible.vbs "Kill.vbs ME.exe"
解決策2:
&
文字列を連結することを意味します。文字列は二重引用符("
)で囲みます。""
文字列区切り文字内の連続する二重引用符()は、リテラルの二重引用符("
)を意味します。したがって、4つの二重引用符(""""
)は、1文字の文字列リテラル、二重引用符("
)になります。それを一緒に入れて、と"""" & WScript.Arguments(0) & """"
なる"<argument>"
。ここで、<argument>
スクリプトに渡された最初のコマンドライン引数です。
wscript.exe "C:\Wherever\invisible.vbs" ...
により、内部を配置するためのバッチファイルを作成する必要はありませんか?
バッチファイルまたはコマンドファイルまたは任意のファイルを非表示にするには... Windows XPビルトインIExpress.exe
ユーティリティを使用して、バッチファイルから.EXEをビルドします。使用IExpress
するときは、非表示の実行オプションをチェックし、何も表示しないことについてすべてのボックスをチェックしてください。.exeを作成した後、選択した実行コマンドフォルダーに配置すると、表示されることはありません。
use CmdowはNT4 / 2000 / XP / 2003用のWin32コマンドラインユーティリティで、ウィンドウの一覧表示、移動、サイズ変更、名前変更、非表示/非表示、無効化/有効化、最小化、最大化、復元、アクティブ化/非アクティブ化、クローズ、強制終了、もっと。
パラメータを渡して非表示のバッチファイルを実行します-
cmdow / run / hid mybat arg1 "arg 2"
バッチファイルが1行と非常に多くの文字に収まる場合は、ランダムディレクトリに置かれたフォルダー内を右クリックしてショートカットを使用し、ウィザードの残りの部分をスキップして、最後に作成したショートカットを右クリックし、プロパティをクリックし、ターゲットの下に、通常batファイルに入れるものを入力します。ボブスおじさん!
長所:
No Command Window
Ability to use an icon
Same Functionality of bat file
短所:
Limited to one line, so many characters
スクリプトをインタラクティブにせずにatジョブを介して実行します。
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")
Windows7を使用すると、「スケジュールされたタスク」コントロールパネルを使用して、指定された権限で、さらには「SYSTEM」アカウントとしても見えないようにバックグラウンドで実行するバッチファイルをスケジュールできます。以下のスクリーンショットをご覧ください。
さらに、それほど多くの機能はありませんが、「/ interactive」オプションなしで「AT.exe」コマンドを使用して、コマンドラインからこのような非表示のバッチスクリプトタスクを作成することもできます。
私はVBScriptソリューションが好きではありません。
nircmd.exeをダウンロードして%systemroot%\system32
フォルダーにコピーし、このコマンドをバッチの最初の行に追加します。
nircmd.exe win hide ititle "cmd.exe"
または、title
コマンドで最初にバッチタイトルをカスタムにしてcmd
、次のようにすべてのウィンドウを非表示にしないようにします。
title MyBatch
nircmd.exe win hide ititle "MyBatch"
誰かが「サイレント」を実行する7〜8つの方法のリストを作成したようです。
http://forums.techguy.org/dos-other/644932-solved-howto-run-batch-file.html
AutoHotkeyスクリプトを作成することもできます。
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
C / C ++からのもう1つの方法は、CREATE_NO_WINDOWフラグを指定してCreateProcess関数を使用することです。ここには示されていない追加のパワーがたくさんあります。これは、system()または_spawn()ファミリーを置き換えるのに必要な最小限のものです。
STARTUPINFO si;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
ZeroMemory( &pi, sizeof(pi) );
// Spawn creates a cmd.exe window. CreateProcess doesn't.
//if ( _spawnl( _P_WAIT, szFileNameBAT, szFileNameBAT, NULL ) ) {
if ( !CreateProcess( szFileNameBAT, szFileNameBAT, NULL, NULL, false,
CREATE_NO_WINDOW, NULL, NULL, &si, &pi ) ) {
MyErrorFunc( "CreateProcess( \"%s\" ): %d", szFileNameBAT, GetLastError() );
goto MyErrorHandling;
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
優れたエグゼコンバータバットはあなたの変換されます.bat
か.cmd
にファイルを.exe
ファイル。
シンプルなUIがあります。「非表示アプリケーション」オプションを選択すると、コンソールウィンドウを表示しないように選択できます。また、アイコン、パッケージ関連ファイル、および他のいくつかのオプションを割り当てることができます。
メインインターフェイスウィンドウのスクリーンショットは次のとおりです。
この画像は古いことに注意してください。バージョン2.4.8が表示され、2018年9月の時点で、Webサイトはバージョン3.0.10.0(最終更新2018-03-23)を提供しています。
警告:www.f2ko.deのWebサイトへのリンクはcoinhive.com
、マルウェアとして広く 識別さ れてい ます。
nircmd.exe win hide ititle "cmd.exe"
これで.exeファイルが作成され、それをクリックしてインストールすると、.batは完全に非表示で実行されます。
重複していたため、別の投稿から私の答えをここに追加し、このソリューションはここに表示されないため、非表示のバッチファイルを実行する方法について17の異なる答えがあります。近い将来、ある時点でその投稿の回答を削除します。
バッチロジックとコマンドを含むバッチスクリプトを作成し、.VBS
拡張子を持つ新しいファイルを作成し、以下のロジック(以下に示す例)を使用し、などのコマンドで.CMD
or .BAT
ファイルへのフルパスをプラグインしますPING -t <IPAddress>
。バッチを非表示で実行し、実行時にコマンドウィンドウを表示しません。
以下の例のロジックではC:\Folder\BatchFileName.cmd
、現在手動で実行しているコマンドなどを含むバッチスクリプトを指すように変更を指定しています。
.VBS
ファイルを保存して、Task Scheduler
Windows7でタスクをスケジュールする際の問題でスケジュールし、ニーズに合わせて無期限のスケジュールで実行します。
それ以外の場合は、.VBS
ファイルをダブルクリックして、PING
必要に応じてポイントするバッチファイルに入れた無限のコマンドを実行します。
注: これは、このスクリプトロジックの取得元であると考えられますが、バッチファイルが実行されたときにコマンドウィンドウが非表示になるようにするために、ここで必要な目的と同じ目的で確実に動作しますServer Fault Source
VBSスクリプト実行コマンドラインバッチ非表示CMDウィンドウの例
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Folder\BatchFileName.cmd" & Chr(34), 0
Set WinScriptHost = Nothing
私はすでにこれに答えましたが、別のアプローチがあります。ここで異なるのは、実行中にバッチスクリプトが自分自身を隠すことができることです。ただし、windowMode.batとgetCMDPid.bat(両方とも.net
コードを含む)の2つの追加スクリプトが必要です。ここでどのように使用することができます:
@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
次のような場所に保存しC:\mypath\myscript.vbs
、レジストリで次のように呼び出します。
wscript "C:\mypath\myscript.vbs" "%1"
.batパスにはスペースを使用できないため、8.3ファイル名に置き換えてください。したがって、たとえばC:\Program Files\myprogram.bat
として参照する必要がありますC:\Progra~1\myprogram.bat
。8.3ファイル名を表示するにはdir /x