本文へスキップ
← ガイド一覧

Windowsサーバーでプログラムを自動実行する

Windowsサーバーでゲームサーバーやボットを起動したままにしておく方法です。リモートデスクトップのウィンドウを閉じるときの注意点、終了したら自動で再び起動する方法、サーバーの再起動後の自動実行までまとめました。

まず知っておくこと: 「切断」と「サインアウト」は違います

  • リモートデスクトップのウィンドウをXボタンで閉じると接続が切れるだけで、サーバー内のプログラムは実行され続けます。
  • サーバー内でスタート → サインアウトをクリックすると、自分が実行したプログラムがすべて終了します。

プログラムを起動したまま抜けるときは、ウィンドウのXボタンで閉じてください。

1. 終了したら自動で再び起動するようにする

プログラムがエラーで終了しても再び実行されるように、.batファイルを作成します。メモ帳に次の内容を書き、ファイルの種類を「すべてのファイル」に変更して、start.batとして保存します。

@echo off
cd /d C:\myserver
:loop
java -Xmx4G -jar server.jar nogui
echo Server stopped. Restarting in 10 seconds...
timeout /t 10
goto loop
  • C:\myserverはプログラムがあるフォルダーに、java ...の行は実際の実行コマンドに置き換えます。(例: Node.jsのボットならnode index.js)
  • 完全に止めるには、ウィンドウを閉じるか、Ctrl + Cを押してからYを入力します。

2. サーバーが再起動したら自動で起動する

Windows Updateなどでサーバーが再起動すると、誰もサインインしていない状態ではプログラムは再び起動しません。タスク スケジューラに登録しておけば、サーバーの起動時に自動で実行されます。

  1. スタートメニューからタスク スケジューラを開きます。
  2. 右側のタスクの作成をクリックします。
  3. 全般タブ
    • 名前: わかりやすい名前(例: マイサーバー)
    • ユーザーがログオンしているかどうかにかかわらず実行するを選択
    • 最上位の特権で実行するにチェック
  4. トリガータブ → 新規 → タスクの開始: スタートアップ時 → OK
  5. 操作タブ → 新規
    • プログラム/スクリプト: 上で作成したC:\myserver\start.bat
    • 開始 (オプション): C:\myserver(必ず入力してください。 空欄のままだと、プログラムがファイルを見つけられないことがよくあります)
  6. 設定タブで、タスクを一定時間以上実行すると停止する項目(デフォルトは3日)のチェックを外します。チェックが入っていると、3日後にプログラムが終了します。
  7. OKをクリックし、サーバーのアカウントのパスワードを入力します。

この方法で実行したプログラムは画面にウィンドウが表示されず、バックグラウンドで実行されます。実行中かどうかは、タスク マネージャーの詳細タブでjava.exe、node.exeなどを探して確認できます。止めるには、タスク スケジューラでそのタスクを選択し、終了をクリックします。

ウィンドウを見ながら使いたい場合

コンソールウィンドウを直接見ながらコマンドを入力する必要があるプログラムなら、サインイン時に実行されるように登録します。

  1. Win + R → shell:startupと入力 → OK
  2. 開いたフォルダーにstart.batのショートカットを入れます。(ファイルを右ボタンでドラッグ&ドロップして「ショートカットをここに作成」)

この方法では、リモートデスクトップでサインインしないと実行されません。 サーバーが再起動した場合は、一度接続してください。

参考

解決しない問題がある場合は、Discordのチケットでお問い合わせください。