ちゃんと動くバッチファイルや PowerShell スクリプトができたので、1 つの .exe として誰かに渡したい。ダブルクリックするだけのファイルで、「プログラムから開く」の確認も、コマンドだらけのコンソールもなしで。

そのためにオンラインの「BAT to EXE 変換ツール」は必要ありません。Windows にはそれを行うツールがすでに含まれており、PowerShell には .ps1 スクリプトで同じことができる無料のオープンなモジュールがあります。どちらも自分のパソコンで動作するため、できあがるファイルはあなたのスクリプトだけから作られます。

お急ぎですか?

  • バッチファイル(.bat / .cmd):Win + R を押して iexpress と入力し、インストールコマンド cmd /c yourscript.bat でファイルをパッケージ化します。
  • PowerShell(.ps1):最初に一度 Install-Module ps2exe -Scope CurrentUser を実行し、次に Invoke-ps2exe .\script.ps1 .\script.exe を実行します。
  • Python(.py):pip install pyinstaller、次に pyinstaller --onefile script.py。
  • アイコンが必要ですか?無料のアイコン抽出で、任意のプログラムから取り出せます。

方法 1:IExpress で BAT を EXE に(Windows 標準)

IExpress は何十年も前から Windows に含まれています。小さなインストーラーを作るためのもので、ファイルを 1 つの EXE にまとめ、EXE の実行時に一時フォルダーへ展開してコマンドを起動します。そのコマンドをバッチファイルにできます。

  1. Win + R を押し、iexpress と入力して Enter を押します。
  2. Create new Self Extraction Directive file を選んで Next をクリックします。
  3. Extract files and run an installation command を選びます。
  4. パッケージにタイトルを付けます(メッセージのウィンドウタイトルに表示されます)。
  5. 確認メッセージ:No prompt。使用許諾契約:Do not display a license。
  6. Packaged files:Add をクリックして .bat ファイル(と必要なファイル)を選びます。
  7. Install Program:自分のファイル名で cmd /c yourscript.bat と手入力します。一覧から .bat を選ぶだけでは何も起きないことがよくあります。IExpress はバッチファイルを直接起動しないためです。
  8. Show window:コンソールを表示するなら Default、非表示で実行するなら Hidden。
  9. 完了メッセージ:No message。
  10. Package name:EXE の保存先を選び、Hide File Extracting Progress Animation from User と Store files using Long File Name inside Package にチェックを入れます。
  11. Restart:No restart。後で作り直したい場合は SED ファイルを保存し、Next をクリックして EXE を作成します。

知っておきたいこと:スクリプトは EXE の場所ではなく、一時フォルダーから実行されます。copy data.txt backup\ のような行はその一時フォルダーを探します。パッケージ外のファイルを読み書きする場合は、フルパス(%USERPROFILE%\Documents\data.txt)を使ってください。

方法 2:ps2exe で PowerShell を EXE に

ps2exe は無料のオープンソース PowerShell モジュールで、公式の PowerShell Gallery で公開されています。.ps1 スクリプトをそれを実行する小さな EXE で包み、アイコン、バージョン、コンソールウィンドウの表示有無を設定できます。

  1. PowerShell を開き(管理者権限は不要)、モジュールを一度インストールします:
    Install-Module ps2exe -Scope CurrentUser
    PowerShell が NuGet プロバイダーのインストールや PSGallery リポジトリの信頼を求めてきたら、次のように答えます Y.
  2. スクリプトのあるフォルダーに移動して EXE を作成します:
    Invoke-ps2exe .\script.ps1 .\script.exe
  3. 便利なオプション:
    • -noConsole:コンソールウィンドウを表示しません(フォームやメッセージボックスを表示するスクリプト向け)。
    • -iconFile .\app.ico:EXE のアイコン。
    • -requireAdmin:起動時に管理者権限を要求します。
    • -title "My Tool" -version "1.0.0":ファイルのプロパティに Windows が表示する情報。

コマンドラインよりウィンドウがいいですか?モジュールのインストール後に Win-PS2EXE を実行してください。小さなフォーム付きの同じツールです。

その他のスクリプト:Python、AutoHotkey、Node.js

  • Python:pyinstaller --onefile script.py で dist フォルダーに EXE が 1 つ作成されます。ウィンドウのあるプログラムには --noconsole を追加します。
  • AutoHotkey:インストーラーに Ahk2Exe が含まれています。.ahk ファイルを右クリックして Compile Script を選びます。
  • Node.js:最近のバージョン(20 以降)は単一実行可能アプリケーションを作成できます(Node.js ドキュメントの「Single executable applications」ページを参照)。

本当に EXE が必要ですか?

もっと簡単な方法で十分なことも多いです:

  • ショートカット。.bat ファイルを右クリックして Send to → Desktop (create shortcut)(送る → デスクトップ (ショートカットを作成))を選び、プロパティでショートカットにアイコンを設定します。ダブルクリックするとスクリプトが実行されます。
  • タスクのスケジュール。毎日またはサインイン時に実行するスクリプトなら、タスク スケジューラで .bat や .ps1 を直接実行できます。
  • スクリプトそのもの。共有相手が Windows を使っているなら、.bat ファイルはダブルクリックするだけで実行できます。

「BAT to EXE 変換ツール」が教えてくれない 3 つのこと

  1. コードは隠されません。これらのツールはスクリプトを EXE の中に、多くの場合プレーンテキストのまま格納します。誰でも読み出せます。たとえば当サイトの文字列抽出は、あらゆるファイル内の読み取れるテキストを一覧表示します。パスワード、トークン、キーは絶対に入れないでください。
  2. ウイルス対策ソフトが警告することがあります。マルウェアも同じラッパーを使うため、Windows Defender や SmartScreen がまったく無害なスクリプト EXE に警告を出すことがあります。コード署名証明書で署名すると効果があり、Microsoft は自作ファイルの誤検知報告も受け付けています。
  3. Web サイトから入手した EXE は中身を確認できないファイルです。オンライン変換ツールが返すのは、何もわからないサーバーで作られたファイルです。だからこそ、変換ツールを提供する代わりに標準の方法を説明しています。IExpress や ps2exe なら、ファイルに何が入ったかを正確に把握できます。

他人から受け取った EXE を開く前に、何が実行されるか知りたいですか?EXE を実行せずに解析する方法をお読みください。

残りの作業に使える無料ツール

すべてブラウザー内で動作し、ファイルがどこかにアップロードされることはありません。

アイコン抽出で EXE 用のアイコンを入手