バッチ ファイルで、変数FILE_OR_FOLDER_NAME
に (絶対または相対、ローカルまたは UNC、スペースありまたはなし、既存または非存在) Windows ファイルまたはディレクトリ名が含まれている場合、次のコマンドは対応するfile:
URL を variableに入れFILE_URL
ます。
for /f "delims=" %%R in ("%FILE_OR_FOLDER_NAME%") do set FILE_URL=%%~fR%
set FILE_URL=file:///%FILE_URL%
set FILE_URL=%FILE_URL:///\\=//%
set FILE_URL=%FILE_URL:\=/%
行 1 は、相対ファイル名を絶対名に展開します。行 2 の先頭に追加しfile:///
ます。3 行目は、UNC パスの特殊なケースを処理します。4 行目では、スラッシュのみを使用していることを確認します。
まとめると、これらは、 、に変換\\remotehost\share\folder
されます。file://remotehost/share/folder
d:\folder
file:///d:/folder
私のテストによると、上記のコマンドは常にfile:
SVN コマンド ラインに受け入れられる URL になり、おそらく他の用途にも受け入れられます。
実際には正しくない唯一のことは、スペースやその他の特殊文字 ( のようなもの#
) が結果の URL で適切に URL エンコードされていないことですfile:
:にD:/my test#repo
なりfile:///D:/my test#repo
ます。これは技術的に正しくありません。ただし、私の特定の使用例では、SVN コマンド ライン パーサーが関係なくリポジトリを検出するため、これは問題になりません。