私はユーザーに見えるものなしでバッチファイル(.bat)を実行するための何らかの方法を探しています(ウィンドウなし、タスクバー名なし、.etc ..)。
私はそれをするためにあるプログラムを使用したくない、私はもっときれいなものを探しています。私は VBScriptを使った解決策 を見つけましたが、私はVBSを使うのも嫌いです。
解決策1:
この1行のテキストをファイルinvisible.vbs
として保存します。
CreateObject( "Wscript.Shell")。 "" ""&WScript.Arguments(0)& "" "、0、Falseを実行します。
見えないようにプログラムやバッチファイルを実行するには、次のように使用します。
wscript.exe "C:\ Wherever\invisible.vbs" "C:\その他の場所\ MyBatchFile.bat"
引数のリストを渡したり中継したりできるようにするには、二重引用符を2つだけ使用します。
CreateObject( "Wscript.Shell")。 ""&WScript.Arguments(0)& ""、0、Falseを実行します。
例:Invisible.vbs "Kill.vbs ME.exe"
解決策2:
バッチファイル、コマンドファイル、または任意のファイルを非表示にするには... 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
もう1つの解決策は、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
コマンドでバッチタイトルをカスタムにします。
title MyBatch
nircmd.exe win hide ititle "MyBatch"
Windows 7を使用すると、 "スケジュールされたタスク"コントロールパネルを使用して、指定された権限で、さらに "SYSTEM"アカウントとして、バックグラウンドで見えないようにバッチファイルを実行するようにスケジュールできます。下のスクリーンショットを参照してください。
さらに、それほど多くの機能はありませんが、 '/ interactive'オプションを指定せずに "AT.exe"コマンドを使用して、コマンドラインからこのような非表示のバッチスクリプトタスクを作成することもできます。
あなたはそれを簡単に最小化して実行することができます。
start /MIN batch.cmd
優れた Bat To Exe Converter は、.bat
または.cmd
ファイルを.exe
ファイルに変換します。
それはシンプルなUIを持っています。 「見えないアプリケーション」オプションを選択することで、コンソールウィンドウを表示しないことを選択できます。また、アイコン、パッケージ関連ファイル、およびその他のいくつかのオプションを割り当てることもできます。
これがメインのインターフェースウィンドウのスクリーンショットです。
この画像は古くなっています。それはバージョン2.4.8を示しており、そして2018年9月の時点で、ウェブサイトはバージョン3.0.10.0(最終更新2018-03-23)を提供しています。
警告:www.f2ko.deのウェブサイトはcoinhive.com
にリンクしています。これは wide識別asmalware 。
それとは別に、C/C++から、CreateProcess関数をCREATE_NO_WINDOWフラグと共に使用することです。ここには示されていませんが、それにはたくさんの余分な力があります。これは、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 );
AutoHotkey スクリプトを作成することもできます。
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
誰かが「サイレント」を実行する7-8の方法のリストを作ったようです:
http://forums.techguy.org/dos-other/644932-solved-howto-run-batch-file.html
私はこのように nircmd でうまくやった。
nircmd.exe win hide ititle "cmd.exe"
今すぐあなたはそれをダブルクリックしてインストールした後、あなたの.batが完全に隠されて実行されることを.exeファイルがあるでしょう。
別の回答をここに追加 post 重複していたので、この解決策が表示されないため、現在、17の異なる回答を実行する方法があります非表示のバッチファイル。近い将来、ある時点でその投稿の回答を削除します。
バッチロジックとコマンドを含むバッチスクリプトを作成し、.VBS
拡張子を持つ新しいファイルを作成し、以下のロジック(以下に示す例を使用)を使用して、.CMD
または.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
ここで隠しプロセスを外部ツールなしでバッチで開始することがわかっているすべての方法をまとめました。スクリプトを使用する準備ができて(それらのうちのいくつかはオプションがかなり豊富です)、そしてそれらすべてがコマンドラインを形成します。PIDも返される可能性があります。使用されるツールはIEXPRESS、SCHTASKS、WScript.Shell、Win32_ProcessおよびJScript.Netです。
あなたは特別なことをする必要はありません。
Windowsサービスからバッチファイルを実行している場合は、サービスの[デスクトップとの対話をサービスに許可する]オプションを有効にしない限り、これらのファイルはデフォルトで非表示になっているはずです。
私はすでにこれに答えたにもかかわらずここで別のアプローチです。異なるのは、バッチスクリプトが実行中に自分自身を隠すことができるということです。ただし、 - windowMode.bat および getCMDPidという2つのスクリプトが必要になります。 bat (どちらも.net
コードを含みます)。ここでどのようにそれから使用することができます:
@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
cmdow /run /hid "file.extention" arg1 "arg 2"
エクスプローラのコンテキストメニューから呼び出されたバッチファイルのウィンドウを非表示にする必要があり、さらにパラメータに引用符を追加する必要がありました。答えのどれも私のために働かなかった、従って私は私自身の解決策を加えている。
私はこれをエクスプローラのコンテキストメニューのレジストリ "コマンド"で持っていました:
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
を使ってください。
私は RunApp を作成してこのような仕事をし、また私のプロダクション環境でそれを使用しています。
以下のような設定:
ファイル:config.arg
:style:hidden
MyBatchFile.bat
arg1
arg2
代わりにrunapp.exe
を起動してください。
私はこれを理解しようとし始めましたが、本当に成功しませんでした。これは私が得たのと同じくらい近かった:
@echo off
if not defined PIL (
set PIL=1
start /min "" %~0
exit /b
)
TITLE Hello World
echo Hello world!
pause>nul
私は同じ問題を抱えていたが、それを考え出した:Shell("filehere" & "parametersforbatchfilehere", vbHidden)