◆ ドロップしたファイルやフォルダのパスに全角スペースがあると引数が分割される
  ◆ 半角スペースがあれば "" がつくので大丈夫
  ◆ 全角スペース以外にも ; や = も分割対象の文字
  ◆ & だと分割ではなく & より前だけになる
◆ bat のみで exe の場合は起きない

クオートされない

bat ファイルを作って それにフォルダをドロップする使い方をしていたらうまく動かないケースがありました
調べてみると 全角スペースを含む場合におかしいようです

引数がおかしなところで分割されてるようだったので簡単な引数を 1 つずつ 1 行表示する bat を作ってみました

args.bat
@echo off
:start
echo %0
shift
if not "%~0" == "" goto :start
pause

これに下の 2 つのフォルダ名のフォルダをドロップすると

  • 半角スペース あり
  • 全角スペース あり

こうなりました

"C:\Users\user1\Desktop\#\args.bat"
C:\Users\user1\Desktop\#\全角スペース
あり
"C:\Users\user1\Desktop\#\半角スペース あり"

全角スペースのところで分割されてます
半角スペースや bat ファイル自身のパスはクオートされていますが 全角スペースの場合はクオートされていません
クオートされてなくても半角スペースや > や | みたいな特殊な文字以外は問題ないように思うのですが全角スペースでなぜか分割されてます
試してみたら 「;」 と 「=」 でも分割されました
復元しようにも複数分割される記号があるので元がどれかわかりません
半角スペースのときのように強制でクオートしたいのですが ドロップした時点でクオート無しで引数にされるので対処するのは難しそうです

exe の場合

この仕組みだと 全角スペースを含むフォルダやファイルをドロップできないことになりますけど これまでそんなことで困ったことはないと思います
exe でも同じなのかなと思って試してみました
exe はここの記事で書いた jsc を使う方法で作ってます

args.js

import System
print(Environment.GetCommandLineArgs().join("\n"))
Console.ReadKey()

jsc args.js

これでできた args.exe にさっきと同じフォルダをドロップすると

C:\Users\user1\Desktop\#\args.exe
C:\Users\user1\Desktop\#\半角スペース あり
C:\Users\user1\Desktop\#\全角スペース あり

問題なく受け取れています
やっぱり bat 使うよりなにかのプログラムを使ったほうが良さそうですね