私は、渡されるすべてのファイル名が有効な URL であることを必要とするプログラムで作業するという不運に見舞われました。(いいえ、理由はわかりません。)コマンド ラインにドロップしてfile:
毎回 URL を手動で作成する必要はなく、Windows GUI からドラッグしたファイルを単純にドロップできるバッチ ファイルをまとめています。
完全で適切な URL エンコーダーは、私のニーズや関心を超えています (とにかく、アプリがチョークする文字のほとんどは、Windows ファイル名では有効ではありません) が、解決する必要がある 2 つのケースは、バックスラッシュとスペースです。バックスラッシュは変数置換構文 ( SET URL=%URL:\=/%
) で簡単に処理できますが、スペースは注意が必要です。これ%
は、URL とバッチ ファイルの両方にとって特別です。
私がよく知っている ( ^%
, %%
) どちらのタイプのバッチ エスケープでも、変数の置換を希望どおりに動作させることができず、解決策をグーグルで検索することに成功していません。バッチの達人は私を助けてくれますか?
これが私がこれまでに持っているものです:
@ECHO OFF
SETLOCAL
SET URLPATH=file:/%~dp1
SET URLPATH=%URLPATH:\=/%
REM none of these work
REM SET URLPATH=%URLPATH: =%20%
REM SET URLPATH=%URLPATH: =%%20%
REM SET URLPATH=%URLPATH: =^%20%
REM works; I just need to figure out how to generate it
SET URLPATH=file:/C:/Documents%%20and%%20Settings/bblank/example.dat
stupidapp.exe %URLPATH%
ENDLOCAL