web-dev-qa-db-ja.com

batファイルからコマンドプロンプトを最小化する方法

このbatファイルがあり、実行時にcmdウィンドウを最小化したい:

@echo off
cd /d C:\leads\ssh 
call C:\Ruby192\bin\setrbvars.bat
Ruby C:\leads\ssh\put_leads.rb

基本的に、すぐにコマンドウィンドウを最小化する必要があります。これを行う方法に関するアイデアはありますか?

37
Matt Elhotiby

彼自身を最小化して再起動させることにより、最小化されたスクリプトを実行する非常に興味深い方法があります。スクリプトの先頭に配置するコードは次のとおりです。

if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit
... script logic here ...
exit

使い方

スクリプトが実行されているときIS_MINIMIZEDが定義されていない(if not DEFINED IS_MINIMIZED)ので:

  1. IS_MINIMIZED1set IS_MINIMIZED=1に設定されます。
  2. スクリプトは、start command && start "" /min "%~dpnx0" %*を使用して自分自身のコピーを開始します。ここで、

    1. ""-ウィンドウの空のタイトル。
    2. /min-最小化して実行するように切り替えます。
    3. "%~dpnx0"-スクリプトへのフルパス。
    4. %*-すべてのスクリプトのパラメーターを渡します。
  3. その後、初期スクリプト&& exitが処理を終了します。

スクリプト変数の開始されたコピーの場合、元のスクリプトによってIS_MINIMIZEDが設定されるため、最初の行の実行がスキップされ、スクリプトロジックに直接移動します。

備考

  • フラグとして使用する変数名を予約する必要があります。
  • スクリプトはexitで終了する必要があります。そうしないと、スクリプトの実行後にcmdウィンドウが閉じられません。
  • スクリプトが引数を受け入れない場合、変数の代わりに引数をフラグとして使用できます。

    if "%1" == "" start "" /min "%~dpnx0" MY_FLAG && exit以下if "%1" == "" start "" /min "%~f0" MY_FLAG && exit

61
izzekil

startコマンドと/minスイッチを使用して、最小化して実行します。例えば:

start /min C:\Ruby192\bin\setrbvars.bat

引数としてバッチファイルを指定したので、/kスイッチを渡してコマンドプロセッサが実行されます。これは、コマンドが終了した後、ウィンドウが画面に残ることを意味します。 cmd.exeを自分で明示的に実行し、必要に応じて適切なスイッチを渡すことで、この動作を変更できます。

または、バッチファイルへのショートカットを作成し(PIFファイルがまだ存在する)、そのプロパティを変更して最小化を開始することもできます。

40
Cody Gray

私が知っている唯一の方法は、バッチファイルへのWindowsショートカットを作成し、そのプロパティをデフォルトで最小化して実行するように変更することです。

16
Bruno Silva

PowerShellを使用すると、新しいインスタンスを開かずに同じファイルから最小化できます。

powershell -window minimized -command ""

また、-window hiddenおよび-window normalは、完全に非表示にしたり、復元したりできます。


ソース: https://stackoverflow.com/a/45061676/1178975

3
user1cat

Win-Run/autostartのバッチを開始したい場合、ここでI Niceソリューションを見つけました https://www.computerhope.com/issues/ch000932.htmhttps:/ /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はまだ最小化されていません。

3
Pedi T.

(スクリプトの起動時だけでなく)いつでもコンソールウィンドウを最小化できるさらに別の無料のサードパーティツールは、TWAPI拡張機能を備えたTclです。

echo package require twapi;twapi::minimize_window [twapi::get_console_window] | tclkitsh -

ここに tclkitsh.exeはPATHにあり、tclkit-cli-*-twapi-*.exesourceforge.net/projects/twapi/files/Tcl binaries/Tclkits with TWAPI / からダウンロード可能なファイル。はるかに軽いmin.exeBernard Chenの答え で言及されています.

1
robert4

実行中にコマンドプロンプトを最小化できますが、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
0
npocmaka

Batファイルにこのテキストを入力した場合:

start /min blah.exe

プログラムを開くとすぐに最小化されます。短いフラッシュのみが表示され、消えます。

0
Kyroflash

私にとってうまく機能する別のオプションは、ConEmuを使用することです。 http://conemu.github.io/en/ConEmuArgs.html を参照してください

"C:\Program Files\ConEmu\ConEmu64.exe" -min -run myfile.bat
0
Pedi T.

Cmdウィンドウを「最小化」する1つの方法は、次のようなものを使用してコンソールのサイズを小さくすることです...

echo DO NOT CLOSE THIS WINDOW
MODE CON COLS=30 LINES=2

必要に応じて、COLSを約18に、LINESを1に減らすことができます。利点は、WinPE、32ビットまたは64ビットで動作し、サードパーティのユーティリティを必要としないことです。

0
SSi

1つのオプションは、現在実行中のコンソールウィンドウのウィンドウ状態を変更し、バッチスクリプト内から呼び出しを行うことができるさまざまなユーティリティの1つを見つけることです。

バッチスクリプトで最初に実行できます。そのようなツールは次の2つです。

min.exe http://www.paulsadowski.com/wsh/cmdprogs.htm

cmdow http://www.commandline.co.uk/cmdow/index.html

0
Bernard Chen

一度開いたコマンドプロンプトからウィンドウを最小化する方法があるかどうかはわかりませんが、次の記事では、事前に最小化された新しいウィンドウで実際のプロセスを子として生成することを提案しています。

http://www.pcreview.co.uk/forums/command-Prompt-tool-minimize-command-window-after-starts-t2037434.html

0
Mr Griever

次のようにスクリプトを実行してみることができます

var WindowStyle_Hidden = 0
var objShell = WScript.CreateObject("WScript.Shell")
var result = objShell.Run("cmd.exe /c setrbvars.bat", WindowStyle_Hidden)

ファイルをfilename.jsとして保存します

0
PatchedUp