web-dev-qa-db-ja.com

Windowsバッチファイルを最大化して起動する

数十台のマシンに配布する予定のバッチファイルを作成しました。複数のデバイスの動作状態を自動的にチェックします。最近、スクリプトの最初に「メニュー」を追加し、リストからクエリする特定のアイテムを選択するようユーザーに求めました。ただし、リストが長すぎるため、スクロールしないと表示できません。

リストを調整するのではなく、Windowsシェルを最大化して起動するために、何がバッチに追加できますか?私はRight click the .bat -> Properties -> Change the "Run" state to "Maximized"をだまそうとしましたが、このオプションは存在しません(そして率直に言って、この機能をスクリプト自体に追加したいと思います)。

スクリプトを実行しているマシンはWindows 7を実行しています

9
root

start /MAX yourscript.batを試して、最大化されたコマンドでスクリプトを開始できます(Windows 7まで)

編集(リックによる):

1つのバッチファイルですべてを実行する方法を示す小さな例を作成しました
(別個のランチャーなし):

@echo off
if not "%1" == "max" start /MAX cmd /c %0 max & exit/b

:: here comes the rest of your batch-file
echo "test"

pause

最大化されたバージョンを開始する前に、元のバッチファイル(すぐに終了します)にわずかなちらつきがあります。


簡単な説明:
パラメータmaxを使用してバッチが呼び出されない場合、再度それ自体を呼び出し(%0)、今回はstart /maxの助けを借りて最大化し、パラメータmaxを使用すると、2回目に呼び出されたときにifステートメントがスキップされ、コマンドが続行されます。

壊す:

  • if not "%1" == "max"%1が「max」でない場合にのみ、次のコマンドを実行します。 %1は、バッチファイルに指定された最初のパラメータを表します。したがって、my_batch.bat max%1変数にはmaxが含まれます。 maxパラメーターを指定してバッチを開始しなかった場合は、この行を実行する必要があります。
  • start /MAX最大化された形式で、その後にコマンドを開始します。
  • cmd /c実行cmd.exeおよび/cは後で終了することを意味します。
  • %0 max%0は独自のバッチファイル名を表し、ここでmaxは最初のパラメーターです。つまり、最初のif- lineをスキップする必要があります。そうしないと、ループに巻き込まれます:)
  • & exit/b&は、前のコマンドと同時に次のコマンドを実行することを意味します。つまり、start /max your batchfileを実行し、その間に現在のバッチを終了します。

これは、max以外のパラメーターを使用してthis versionを呼び出すことができないことも意味します。バッチファイルを開始するためにパラメーターが必要な場合は、さらにマジックを実行する必要があります(テスト後に%1をshiftingするなど)。
その場合はお知らせください。

15
user2196728

実行中にコマンドプロンプトを最大化できますが、次の2つの追加スクリプトが必要になります。 windowMode および getCmdPid.bat

@echo off

call getCmdPid
call windowMode -pid %errorlevel% -mode maximized

some commands
0
npocmaka