如何在批处理文件中将 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的主要内容,如果未能解决你的问题,请参考以下文章
如何在 OpenSSL 中将 jks 文件转换为 p12 文件?