WindowsのBATからPhotoshopのドロップレットを呼び出す場合は、選択したPSDのパスを引数として渡します。この記事の例は、BATに渡されたファイルだけを1件ずつ呼び出します。起動時のカレントフォルダーにあるPSDを列挙する処理は含みません。
単に画像を一括加工するなら、作成済みドロップレットへ直接ドラッグする方法でも足ります。BATは、入力ファイルの確認やWindows側の処理と組み合わせたい場合に使います。Photoshop内の保存設定は、アクションとバッチの入出力設定で先に確認してください。
2026年10月3日に、Windowsのcmd.exeと引数を記録する専用プログラムで、このBATの引数処理を16項目確認しました。
2026年10月17日には、Windows 11 Pro(10.0.26200)とAdobe Photoshop 2026(27.11.0)で実際にドロップレットを作り、BATから1件・2件のPSDを渡して、出力されたJPEGの枚数・寸法・中身を確かめました。
このとき、以前のコードは1件目のJPEGが保存されたのに失敗と判定して止まることが分かったため、下のコードは直した版に差し替えています(結果は5章)。
1. コピー画像でドロップレットを用意する
まず、自作画像のコピーで単独再生できるアクションを用意します。原本、処理用コピー、記録時の保存先、今回の出力先を分け、出力先には空のフォルダーを使ってください。原本を上書きする「保存して閉じる」は、この練習では使いません。
- たとえば400×200pxと200×400pxの異なる画像を、処理用のPSDとして別名で保存します。同名のPSDを別フォルダーから同じ出力先に送ると衝突するため、最初は固有の名前を使います。
- 開いている画像の幅を200pxに変更し、JPEGの「別名で保存」と「閉じる」を記録します。再サンプルと縦横比固定を確認します。この設定では、期待寸法はそれぞれ200×100pxと200×400pxです。長辺を200pxにする設定とは異なります。
- Photoshopの[ファイル]→[自動処理]→[ドロップレットを作成]を選び、今回のセットとアクションを指定します。
- 保存名をPracticeDroplet.exeとします。BATと同じフォルダーに保存します。
- 出力先を専用フォルダーに設定し、記録済みの「別名で保存」の名前とフォルダーを置き換えるオプションを使います。名称は版によって「
"別名で保存" コマンドを省略」などと表示されます。保存処理そのものを消す設定ではありません。 - PSDのコピーをまず1つ、ドロップレットに直接ドラッグして、出力JPEGを開き直します。寸法、画像内容、保存先、原本が変わっていないことを確認してからBATに進みます。
「開く」コマンドを無視する設定は、アクションに「開く」が記録されているかで判断します。記録時の特定ファイルを開き直してしまう場合は、この設定と記録内容を確認してください。最初から開いた画像を加工するアクションに、機械的にチェックを入れる手順にはしません。
作成手順はAdobeのドロップレット作成の説明、保存と「開く」の条件はバッチ・ドロップレットの処理オプションに基づきます。
2. 指定したPSDだけを渡すBAT
次の内容をRunDroplet.batとして保存します。コードはASCII文字だけなので、文字コードを変えるためのchcpは不要です。実際の拡張子が.batになっていることを確認してください。同じフォルダーに置いたPracticeDroplet.exeを呼び出します。ドロップレット名を変えた場合は、3行目の名前も合わせます。
@echo off
setlocal DisableDelayedExpansion
set "droplet=%~dp0PracticeDroplet.exe"
if not exist "%droplet%" goto no_droplet
if "%~1"=="" goto no_input
set "dispatched=0"
:next
if "%~1"=="" goto done
if /i not "%~x1"==".psd" goto unsupported
if not exist "%~f1" goto missing
if exist "%~f1\" goto unsupported
start "" /wait "%droplet%" "%~f1"
rem The droplet returned exit code 1 even after saving, so it is not checked.
set /a dispatched+=1 >nul
shift
goto next
:done
echo Requested %dispatched% file(s). Inspect Photoshop output.
exit /b 0
:no_droplet
echo Droplet not found: "%droplet%"
exit /b 2
:no_input
echo Drag PSD files onto this BAT file.
exit /b 2
:unsupported
echo Expected a PSD file: "%~1"
exit /b 2
:missing
echo File not found: "%~f1"
exit /b 2
PSDのコピーを1つ、または複数選択してRunDroplet.batへドラッグします。引数のフルパスを引用符で囲み、shiftで次の入力へ移るため、カレントフォルダーに依存せず、渡された順に処理を要求します。フォルダー、PSD以外、存在しないパスでは停止します。
Microsoftのstartの仕様に合わせ、最初の空の引用符はウィンドウタイトル、次の引用符は実行ファイルのパスに使います。/waitは呼び出したプロセスの終了待ちです。Photoshop側での保存完了や、画像の正しい変換結果を保証するものではありません。
2026年10月17日の確認では、ドロップレットのプロセスはJPEGが保存されてから0.5秒以内に終わり、2件は1件ずつ順に保存されました。
ただし、これは1件3秒ほどで終わる今回のアクションでの結果です。
ドロップレットは、JPEGが正しく保存された場合でも終了コード1を返しました。
そのため、このコードはドロップレットの終了コードを見ていません。
遅延環境変数展開を無効にし、サブルーチン呼び出しによる引数の再展開も避けています。ただし、別のBATのcallやコマンド文字列の生成を経由すると、その呼び出し元の展開規則が適用されます。この例の確認範囲は、通常のパス、空白、日本語、単独の!・%・^・&を含む名前、大文字の.PSDと複数入力です。あらゆる特殊文字列や長いコマンドラインの対応を保証するものではありません。
終了コード0は、各入力のパス確認を通過し、すべての入力について起動コマンドを実行したことを示します。起動コマンドの失敗も判定していないため、ドロップレットが入力を受け取ったことや、画像の処理・保存が成功したことは保証しません。
2は、ドロップレットが見つからない、入力がない、PSD以外、存在しないパスのいずれかで止まった場合です。
途中で止まっても、それより前のPSDは既に処理されていることがあります。
出力ファイルは自動で取り消されません。
3. 「送る」にはBATへのショートカットを置く
エクスプローラーの「送る」から使う場合は、BATとドロップレットを同じ作業フォルダーに置いたまま、RunDroplet.batへのショートカットをSendToに配置します。Windows+Rでshell:sendtoを開き、作成したショートカットを置いてください。この操作は未検証なので、最初は少数のコピーで引数と出力を確認します。
このコードの%~dp0はBAT自体の保存場所です。BATだけをSendToへ移すと、PracticeDroplet.exeもSendToにあるものとして探してしまいます。ショートカットの作業フォルダーを変えても、%~dp0の参照先は変わりません。
4. 呼び出しと画像出力を分けて確認する
| 症状 | 確認する箇所 |
|---|---|
| Droplet not found | BATとEXEの場所、3行目の名前、実際の拡張子 |
| PSDを選んだのに対象外・見つからない | 渡されたパス、拡張子、移動済みファイル、フォルダーを選んでいないか |
| 単独ドロップでも失敗する | アクション内のレイヤー名・素材・記録済みの「開く」、入力の色モード |
| BATが終了したのにJPEGがない | Photoshopのダイアログ、処理継続の有無、「別名で保存」の記録、実際の保存先 |
| 2件送ったのに同じ画像・1件しかない | 固定の入力ファイルを開いていないか、同名出力の上書きがないか |
実画像の確認では、まず空の出力先へ1件、次に内容の違う2件を送ります。JPEGを開き直し、枚数・内容・寸法・名前を照合します。原本と処理用PSDの変更も確認してください。BATのRequestedという表示だけで、この確認を済ませたことにはできません。
5. 実機でBATから呼び出した結果(2026年10月17日)
Windows 11 Pro(10.0.26200)とAdobe Photoshop 2026(27.11.0)で確かめました。
練習用に、400×200px(左が赤・右が青)と200×400px(上が緑・下が黄)のPSDを自作し、原本とは別のコピーを使いました。
アクションは、幅を200pxにする[画像解像度]、JPEGの「別名で保存」、「閉じる」の3つです。
このアクションは同じPCで画面から記録したものを読み込んで使い、確認の対象には含めていません。
ドロップレットは[ファイル]→[自動処理]→[ドロップレットを作成]の画面で、BATと同じフォルダーにPracticeDroplet.exeとして作りました。
実行後は「フォルダー」で空の出力先を選び、「"別名で保存" コマンドを省略」にチェックを入れ、ファイルの名前は初期値(ドキュメントの名前+拡張子(小文字))のままです。
BATへは、エクスプローラーでのドラッグ&ドロップの代わりに、コマンドラインの引数でPSDのフルパスを渡しました。
Photoshopは起動したままの状態です。
| 渡したもの | BATの表示と終了コード | 出力フォルダー |
|---|---|---|
| 何も渡さない | Drag PSD files onto this BAT file.・2 | なし |
| テキストファイル1つ | Expected a PSD file・2 | なし |
| 横長PSD1つ(以前のコード) | Launch failed・3 | 200×100pxのJPEGが1枚できていた |
| 横長・縦長PSDの2つ(以前のコード) | Launch failed・3 | 1件目の1枚だけ |
| 横長・縦長PSDの2つ(直したコード) | Requested 2 file(s).・0 | 200×100pxと200×400pxの2枚 |
| 横長PSD・存在しないパス・縦長PSD(直したコード) | File not found・2 | 1件目の1枚だけ |
出力されたJPEGは、横長が200×100px、縦長が200×400pxで、どちらも元の絵(左右の赤と青、上下の緑と黄)のまま縮小されていました。
2件を渡したときも、2枚目が1枚目と同じ絵になることはありませんでした。
処理用のPSDと原本は、実行の前後で変わっていません。

以前のコードは、ドロップレットの終了コードが1以上なら「呼び出しに失敗した」と判断していました。
ところがドロップレットは、JPEGを保存できた場合も終了コード1を返したため、1件目の後で止まり、2件目以降が処理されませんでした。
ドロップレットを直接起動して終了コードを読んだ場合も、1でした。
直したコードでは、この判定の行を説明のコメント(rem)に置き換え、飛び先の3行を外しています。

確かめていないのは、エクスプローラーで実際にドラッグ&ドロップする操作、「送る」からの実行、Photoshopが起動していない状態からの呼び出し、1件に長くかかる重いアクション、Macです。
Photoshopが起動していない状態や重いアクションでは、/waitがどこまで待つかが変わることがあるので、最初は少数のコピーで出力を確かめてください。
旧コードと配布記録
旧記事のコードはカレントフォルダーの*.psdを列挙しており、「送る」で選んだPSDを使う説明と一致していませんでした。下に旧例を参照用で残しています。コピー時に混入した操作ボタンの文字列は除去していますが、特定ユーザーのパスや入力を列挙する旧処理を含むため、そのまま実行しないでください。
旧コード3例(参照用・実行しない)
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\SendTo@echo off
echo "%~dp1%~n1.psd"
pause@echo off
setlocal enabledelayedexpansion
for %%F in (*.psd) do call :sub "%%F"
goto :EOF
:sub
C:\Users\min\Desktop\グレーアウト.exe "%~dp1%~n1.psd"
goto :EOF既存GitHubの01.shは旧例の配布記録です。リポジトリーの内容は今回更新していません。現在のWindows用BATは、上のRunDroplet.batのコードを使ってください。
セットの外部保存はATNの保存・読み込み、キーからの単独再生はアクションのショートカット設定、JSXからの読み込み・再生はATNを読み込むJSXで確認できます。全体の操作一覧はPhotoshopの総合案内にまとめています。
よくある質問:ドロップレットをBATから実行する
BATからドロップレットを呼び出すと、どうなりますか?
WindowsのBATからPhotoshopのドロップレットを呼び出す場合は、選択したPSDのパスを引数として渡します。記事の例は、BATに渡されたファイルだけを1件ずつ呼び出します。起動時のカレントフォルダーにあるPSDを列挙する処理は含みません。
ドロップレットに直接ドラッグするのと、BATを使うのは、どう違いますか?
単に画像を一括加工するなら、作成済みドロップレットへ直接ドラッグする方法でも足ります。BATは、入力ファイルの確認や、Windows側の処理と組み合わせたい場合に使います。Photoshop内の保存設定は、アクションとバッチの入出力設定で先に確認してください。
練習の準備は、どうしますか?
自作画像のコピーで、単独再生できるアクションを用意します。原本、処理用コピー、記録時の保存先、今回の出力先を分け、出力先には空のフォルダーを使います。原本を上書きする「保存して閉じる」は、この練習では使いません。たとえば400×200pxと200×400pxの異なる画像を、処理用のPSDとして別名で保存します。同名のPSDを別フォルダーから同じ出力先に送ると衝突するため、最初は固有の名前を使います。開いている画像の幅を200pxに変更し、JPEGの「別名で保存」と「閉じる」を記録します。再サンプルと縦横比固定を確認します。この設定での期待寸法は、200×100pxと200×400pxです。Photoshopの[ファイル]→[自動処理]→[ドロップレットを作成]で、セットとアクションを指定し、保存名をPracticeDroplet.exeとします。
BATは、どう作りますか? 注意点は?
RunDroplet.batとして保存します。コードはASCII文字だけなので、文字コードを変えるためのchcpは不要です。実際の拡張子が.batになっていることを確認してください。同じフォルダーに置いたPracticeDroplet.exeを呼び出し、ドロップレット名を変えた場合は、3行目の名前も合わせます。PSDのコピーを1つ、または複数選択してRunDroplet.batへドラッグします。引数のフルパスを引用符で囲み、shiftで次の入力へ移るため、カレントフォルダーに依存せず、渡された順に処理を要求します。フォルダー、PSD以外、存在しないパスでは停止します。startの/waitは、呼び出したプロセスの終了待ちで、Photoshop側での保存完了や、画像の正しい変換結果を保証するものではありません。
終了コードは、何を表しますか?
終了コード0は、各入力のパス確認を通過し、すべての入力について起動コマンドを実行したことを示します。起動コマンドの失敗も判定していないため、ドロップレットが入力を受け取ったことや、画像の処理・保存が成功したことは保証しません。
2は、ドロップレット・入力の不足や対象外、存在しないパスで止まった場合です。
ドロップレットは成功しても終了コード1を返したため、このコードはドロップレットの終了コードを見ていません。
途中で止まっても、それより前のPSDは既に処理されていることがあり、出力ファイルは自動で取り消されません。
エクスプローラーの「送る」から使うには?
BATとドロップレットを同じ作業フォルダーに置いたまま、RunDroplet.batへのショートカットをSendToに配置します。Windows+Rでshell:sendtoを開き、作成したショートカットを置いてください。この操作は未検証なので、最初は少数のコピーで引数と出力を確認します。BATだけをSendToへ移すと、PracticeDroplet.exeもSendToにあるものとして探してしまいます(%~dp0はBAT自体の保存場所です)。
動かないときは、何を確認しますか?
Droplet not foundは、BATとEXEの場所、3行目の名前、実際の拡張子を確認します。PSDを選んだのに対象外・見つからない場合は、渡されたパス、拡張子、移動済みファイル、フォルダーを選んでいないかを確認します。単独ドロップでも失敗する場合は、アクション内のレイヤー名・素材・記録済みの「開く」、入力の色モードを確認します。BATが終了したのにJPEGがない場合は、Photoshopのダイアログ、処理継続の有無、「別名で保存」の記録、実際の保存先を確認します。2件送ったのに同じ画像・1件しかない場合は、固定の入力ファイルを開いていないか、同名出力の上書きがないかを確認します。
記事の手順は、実機で確認されていますか? 実画像は、どう確認しますか?
2026年10月3日に、Windowsのcmd.exeと引数を記録する専用プログラムで、BATの引数処理を16項目確認しました。
2026年10月17日には、Windows 11 Pro(10.0.26200)とAdobe Photoshop 2026(27.11.0)で、ドロップレットをBATから呼び出し、横長と縦長のPSDから200×100pxと200×400pxのJPEGが1枚ずつできることを確かめました。
このとき見つかった、以前のコードが1件目の後に止まる問題は、直した版に差し替えています。
ドラッグ&ドロップそのもの、「送る」、Photoshop未起動からの呼び出しは確かめていません。
実画像の確認では、まず空の出力先へ1件、次に内容の違う2件を送り、JPEGを開き直して、枚数・内容・寸法・名前を照合してください。
BATのRequestedという表示だけで、この確認を済ませたことにはできません。
旧記事のコードはカレントフォルダーの*.psdを列挙するもので、記事の後半に参照用として残しています。
