このbatファイルがあり、実行時にcmdウィンドウを最小化したい:
@echo off
cd /d C:\leads\ssh
call C:\Ruby192\bin\setrbvars.bat
Ruby C:\leads\ssh\put_leads.rb
基本的に、すぐにコマンドウィンドウを最小化する必要があります。これを行う方法に関するアイデアはありますか?
彼自身を最小化して再起動させることにより、最小化されたスクリプトを実行する非常に興味深い方法があります。スクリプトの先頭に配置するコードは次のとおりです。
if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit
... script logic here ...
exit
スクリプトが実行されているときIS_MINIMIZED
が定義されていない(if not DEFINED IS_MINIMIZED
)ので:
set IS_MINIMIZED=1
に設定されます。スクリプトは、start command && start "" /min "%~dpnx0" %*
を使用して自分自身のコピーを開始します。ここで、
""
-ウィンドウの空のタイトル。/min
-最小化して実行するように切り替えます。"%~dpnx0"
-スクリプトへのフルパス。%*
-すべてのスクリプトのパラメーターを渡します。その後、初期スクリプト&& exit
が処理を終了します。
スクリプト変数の開始されたコピーの場合、元のスクリプトによってIS_MINIMIZED
が設定されるため、最初の行の実行がスキップされ、スクリプトロジックに直接移動します。
exit
で終了する必要があります。そうしないと、スクリプトの実行後にcmdウィンドウが閉じられません。スクリプトが引数を受け入れない場合、変数の代わりに引数をフラグとして使用できます。
if "%1" == "" start "" /min "%~dpnx0" MY_FLAG && exit
以下if "%1" == "" start "" /min "%~f0" MY_FLAG && exit
start
コマンドと/min
スイッチを使用して、最小化して実行します。例えば:
start /min C:\Ruby192\bin\setrbvars.bat
引数としてバッチファイルを指定したので、/k
スイッチを渡してコマンドプロセッサが実行されます。これは、コマンドが終了した後、ウィンドウが画面に残ることを意味します。 cmd.exe
を自分で明示的に実行し、必要に応じて適切なスイッチを渡すことで、この動作を変更できます。
または、バッチファイルへのショートカットを作成し(PIFファイルがまだ存在する)、そのプロパティを変更して最小化を開始することもできます。
私が知っている唯一の方法は、バッチファイルへのWindowsショートカットを作成し、そのプロパティをデフォルトで最小化して実行するように変更することです。
PowerShellを使用すると、新しいインスタンスを開かずに同じファイルから最小化できます。
powershell -window minimized -command ""
また、-window hidden
および-window normal
は、完全に非表示にしたり、復元したりできます。
Win-Run/autostartのバッチを開始したい場合、ここでI Niceソリューションを見つけました https://www.computerhope.com/issues/ch000932.htm & https:/ /superuser.com/questions/364799/how-to-run-the-command-Prompt-minimized
cmd.exe /c start /min myfile.bat ^& exit
cmd.exe
は、startはバッチの外部で実行できるwindowsコマンドではないため必要です。/c
=開始が終了した後に終了^& exit
部分は、バッチがexit
で終わっていなくてもウィンドウが閉じられるようにしますただし、最初のcmdはまだ最小化されていません。
(スクリプトの起動時だけでなく)いつでもコンソールウィンドウを最小化できるさらに別の無料のサードパーティツールは、TWAPI拡張機能を備えたTclです。
echo package require twapi;twapi::minimize_window [twapi::get_console_window] | tclkitsh -
ここに tclkitsh.exe
はPATHにあり、tclkit-cli-*-twapi-*.exe
sourceforge.net/projects/twapi/files/Tcl binaries/Tclkits with TWAPI / からダウンロード可能なファイル。はるかに軽いmin.exe
は Bernard Chenの答え で言及されています.
実行中にコマンドプロンプトを最小化できますが、2つの追加スクリプトが必要になります。 windowMode および getCmdPid.bat :
@echo off
call getCmdPid
call windowMode -pid %errorlevel% -mode minimized
cd /d C:\leads\ssh
call C:\Ruby192\bin\setrbvars.bat
Ruby C:\leads\ssh\put_leads.rb
Batファイルにこのテキストを入力した場合:
start /min blah.exe
プログラムを開くとすぐに最小化されます。短いフラッシュのみが表示され、消えます。
私にとってうまく機能する別のオプションは、ConEmuを使用することです。 http://conemu.github.io/en/ConEmuArgs.html を参照してください
"C:\Program Files\ConEmu\ConEmu64.exe" -min -run myfile.bat
Cmdウィンドウを「最小化」する1つの方法は、次のようなものを使用してコンソールのサイズを小さくすることです...
echo DO NOT CLOSE THIS WINDOW
MODE CON COLS=30 LINES=2
必要に応じて、COLSを約18に、LINESを1に減らすことができます。利点は、WinPE、32ビットまたは64ビットで動作し、サードパーティのユーティリティを必要としないことです。
1つのオプションは、現在実行中のコンソールウィンドウのウィンドウ状態を変更し、バッチスクリプト内から呼び出しを行うことができるさまざまなユーティリティの1つを見つけることです。
バッチスクリプトで最初に実行できます。そのようなツールは次の2つです。
一度開いたコマンドプロンプトからウィンドウを最小化する方法があるかどうかはわかりませんが、次の記事では、事前に最小化された新しいウィンドウで実際のプロセスを子として生成することを提案しています。
次のようにスクリプトを実行してみることができます
var WindowStyle_Hidden = 0
var objShell = WScript.CreateObject("WScript.Shell")
var result = objShell.Run("cmd.exe /c setrbvars.bat", WindowStyle_Hidden)
ファイルをfilename.jsとして保存します