ちゃんと動くバッチファイルや 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 の実行時に一時フォルダーへ展開してコマンドを起動します。そのコマンドをバッチファイルにできます。
- Win + R を押し、
iexpressと入力して Enter を押します。 - Create new Self Extraction Directive file を選んで Next をクリックします。
- Extract files and run an installation command を選びます。
- パッケージにタイトルを付けます(メッセージのウィンドウタイトルに表示されます)。
- 確認メッセージ:No prompt。使用許諾契約:Do not display a license。
- Packaged files:Add をクリックして
.batファイル(と必要なファイル)を選びます。 - Install Program:自分のファイル名で
cmd /c yourscript.batと手入力します。一覧から .bat を選ぶだけでは何も起きないことがよくあります。IExpress はバッチファイルを直接起動しないためです。 - Show window:コンソールを表示するなら Default、非表示で実行するなら Hidden。
- 完了メッセージ:No message。
- Package name:EXE の保存先を選び、Hide File Extracting Progress Animation from User と Store files using Long File Name inside Package にチェックを入れます。
- 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 で包み、アイコン、バージョン、コンソールウィンドウの表示有無を設定できます。
- PowerShell を開き(管理者権限は不要)、モジュールを一度インストールします:
PowerShell が NuGet プロバイダーのインストールや PSGallery リポジトリの信頼を求めてきたら、次のように答えます Y.Install-Module ps2exe -Scope CurrentUser - スクリプトのあるフォルダーに移動して EXE を作成します:
Invoke-ps2exe .\script.ps1 .\script.exe - 便利なオプション:
-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 つのこと
- コードは隠されません。これらのツールはスクリプトを EXE の中に、多くの場合プレーンテキストのまま格納します。誰でも読み出せます。たとえば当サイトの文字列抽出は、あらゆるファイル内の読み取れるテキストを一覧表示します。パスワード、トークン、キーは絶対に入れないでください。
- ウイルス対策ソフトが警告することがあります。マルウェアも同じラッパーを使うため、Windows Defender や SmartScreen がまったく無害なスクリプト EXE に警告を出すことがあります。コード署名証明書で署名すると効果があり、Microsoft は自作ファイルの誤検知報告も受け付けています。
- Web サイトから入手した EXE は中身を確認できないファイルです。オンライン変換ツールが返すのは、何もわからないサーバーで作られたファイルです。だからこそ、変換ツールを提供する代わりに標準の方法を説明しています。IExpress や ps2exe なら、ファイルに何が入ったかを正確に把握できます。
他人から受け取った EXE を開く前に、何が実行されるか知りたいですか?EXE を実行せずに解析する方法をお読みください。
残りの作業に使える無料ツール
すべてブラウザー内で動作し、ファイルがどこかにアップロードされることはありません。