WSHスクリプトに、空白を含む248(260?)文字以上のパスを持つファイルをドラッグ&ドロップすると、ファイル名が空白の前と後で2つの引数として扱われてしまう。
空白を含むパスでも、上記の制限より短いパスなら問題なく1つの引数として扱われる。
回避方法は現在調査中だがエクスプローラからドラッグ&ドロップする使い方をしている限り、あまり良い回避方法はなさそう。
(空白が複数個あった場合の扱い、空白が2個以上連続したファイル名の扱い、相対パスやUNC形式パスの扱いを考えると、2つの引数を繋げ直すという方針は泥沼化しそう)
コマンドラインから実行するなら、パスをUNC形式で渡せば大丈夫という噂があるが、これは相対パス指定の場合は使えない。
回避方法
上記の問題が発生するのは
- WSHスクリプトのファイル(*.js/*.vbs)へ直接ファイルをドラッグ&ドロップした場合
- WSHスクリプトのファイル(*.js/*.vbs)へのショートカットにファイルをドラッグ&ドロップした場合
だけで、以下の場合は問題ない。
- wscript.exe "【WSHスクリプトのファイル(*.js/*.vbs)】" へのショートカットにファイルをドラッグ&ドロップした場合
なお、260文字というのはWin32のMAX_PATHね。