如何在批处理文件中将 DOS 路径转换为文件方案 URI

Posted

技术标签:

【中文标题】如何在批处理文件中将 DOS 路径转换为文件方案 URI【英文标题】:How to convert from DOS path to file scheme URI in Batch file 【发布时间】:2011-06-25 01:17:16 【问题描述】:

我正在尝试为 svnsync 编写一个批处理文件,它需要 svn 存储库的 url。批处理文件的其余部分使用 %~dp0 来获取批处理文件的路径,但这不适用于 svnsync。

将路径(例如 %~dp0repo,扩展为 c:\backup\repo)转换为适合 svnsync 的 uri(file:///c:/backup/repo)的最佳方法是什么?

理想情况下,它也能够处理空格和路径中没有的内容,所以我宁愿避免使用一些显式的字符替换来从路径转换为 ​​URL ——但如果这是唯一的方法,哦,好吧。

谢谢!

【问题讨论】:

【参考方案1】:

从你的食谱看来你只需要:

\ 替换为/ 在前面贴file:///

我们开始吧:

set DOSPATH=%~dp0repo
set URI=file:///%DOSPATH:\=/%

【讨论】:

为了防止文件/路径名中的特殊字符,您可以使用引号: set "DOSPATH=%dp0repo" ... set "URI=file://%DOSPATH:\=/% " @jeb:不,值得注意的是,上面两行中不需要引号。 @bobbogo:在许多情况下,您的解决方案都有效,但在 C:\Documents & Settings 中失败 @jeb:哈!我在等别人这么说(不是!)。是的,当然,你是对的。 将两个赋值都放在双引号中(例如set "var=value")。这似乎解决了& 问题。我仍然不知道如何在不使用双引号的情况下输出结果,但否则我认为 var 获得了正确的 URI 并且可以使用。

以上是关于如何在批处理文件中将 DOS 路径转换为文件方案 URI的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中将用户输入转换为文件路径

如何在 Java 1.7 中将文件路径转换为有效的文件路径

如何在 ASP.NET 中将文件路径转换为 ​​URL

如何在 OpenSSL 中将 jks 文件转换为 p12 文件?

如何在 Bash 脚本中将 DOS/Windows 换行符 (CRLF) 转换为 Unix 换行符 (LF)

在Android中将文件路径转换为Uri