Batch file 如何在批处理文件中从DOS路径转换为文件模式URI
我正在尝试为svnsync编写一个批处理文件,它需要指向svn存储库的URL。批处理文件的其余部分使用%dp0获取批处理文件的路径,但这不适用于svnsync 将路径(例如%dp0repo,扩展为c:\backup\repo)转换为适合svnsync的uri的最佳方式是什么(file:///c:/backup/repo)? 理想情况下,它能够处理路径中没有的空格和其他内容,因此我更愿意避免使用显式字符替换来从路径转换为URL——但如果这是唯一的方法,那么好吧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——但如果这是唯一的方法,那么好吧 谢谢 根据您的食谱,您似乎只需要:
谢谢 根据您的食谱,您似乎只需要:
- 将
替换为\
/
- 将
粘贴在前面文件://
set DOSPATH=%~dp0repo
set URI=file:///%DOSPATH:\=/%
为了防止文件/路径名中出现特殊字符,可以使用引号:set“DOSPATH=%dp0repo”。。。设置“URI=file://%DOSPATH:\=/%”@jeb:Nope,显然您不需要在上面的两行中加引号。@bobbogo:在许多情况下,您的解决方案是有效的,但在C:\Documents&Settings@jeb:哈!我在等着有人这么说(不是!)。是的,当然,你是对的。把两个作业都用双引号引起来(例如
设置“var=value”
)。这似乎解决了&
问题。我仍然不知道如何在不使用双引号的情况下输出结果,但是我认为var获得了正确的URI并且是可用的。