Batch file 如何在批处理文件中从DOS路径转换为文件模式URI

Batch file 如何在批处理文件中从DOS路径转换为文件模式URI,batch-file,file-uri,Batch File,File Uri,我正在尝试为svnsync编写一个批处理文件,它需要指向svn存储库的URL。批处理文件的其余部分使用%dp0获取批处理文件的路径,但这不适用于svnsync 将路径(例如%dp0repo,扩展为c:\backup\repo)转换为适合svnsync的uri的最佳方式是什么(file:///c:/backup/repo)? 理想情况下,它能够处理路径中没有的空格和其他内容,因此我更愿意避免使用显式字符替换来从路径转换为URL——但如果这是唯一的方法,那么好吧 谢谢 根据您的食谱,您似乎只需要:

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

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

理想情况下,它能够处理路径中没有的空格和其他内容,因此我更愿意避免使用显式字符替换来从路径转换为URL——但如果这是唯一的方法,那么好吧


谢谢

根据您的食谱,您似乎只需要:

  • \
    替换为
    /
  • 文件://
    粘贴在前面
我们开始:

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

为了防止文件/路径名中出现特殊字符,可以使用引号:set“DOSPATH=%dp0repo”。。。设置“URI=file://%DOSPATH:\=/%”@jeb:Nope,显然您不需要在上面的两行中加引号。@bobbogo:在许多情况下,您的解决方案是有效的,但在C:\Documents&Settings@jeb:哈!我在等着有人这么说(不是!)。是的,当然,你是对的。把两个作业都用双引号引起来(例如
设置“var=value”
)。这似乎解决了
&
问题。我仍然不知道如何在不使用双引号的情况下输出结果,但是我认为var获得了正确的URI并且是可用的。