在一个博客文章来自微软的他们说明了如何编写 URI 来指定本地系统文件路径。
当共享网络共享文件的路径时,一些聊天程序会在浏览器中打开这些文件。
因此我手动编写了将 Windows 路径转换为文件 URI 所需的更改
UNC Windows path: \\sharepoint.business.com\DavWWWRoot\rs\project 1\document.txt
变成
URI: file://sharepoint.business.com/DavWWWRoot/rs/project%201/document.txt
我厌倦了每次手动编码,并想知道是否有办法快速转换为文件 URI。
我的机器没有管理员权限,所以我无法安装软件。
答案1
PowerShell 是自动执行上述繁琐重复任务的绝佳方法!
使用 PowerShellUsing PowerShell
使用 PowerShell(所有版本)将上述 UNC 路径转换为文件 URI 非常简单,只需要格式并替换运算符, 例如:
$Path = "\\sharepoint.business.com\DavWWWRoot\rs\project 1\document.txt"
# replace back slash characters with a forward slash, url-encode spaces,
# and then prepend "file:" to the resulting string
# note: the "\\" in the first use of the replace operator is an escaped
# (single) back slash, and resembles the leading "\\" in the UNC path
# by coincidence only
"file:{0}" -f ($Path -replace "\\", "/" -replace " ", "%20")
得出以下结论:
file://sharepoint.business.com/DavWWWRoot/rs/project%201/document.txt
作为可重用函数
最后,应尽可能将上述重复任务制作成 PowerShell 函数。这样可以节省将来的时间,并确保每个任务始终以完全相同的方式执行。
以下函数与上述函数等效:
function ConvertTo-FileUri {
param (
[Parameter(Mandatory)]
[string]
$Path
)
$SanitizedPath = $Path -replace "\\", "/" -replace " ", "%20"
"file:{0}" -f $SanitizedPath
}
一旦定义了函数(并将其加载到当前 PowerShell 会话中),只需按名称调用该函数并提供要转换的 UNC 路径作为参数,例如:
ConvertTo-FileUri -Path "\\sharepoint.business.com\DavWWWRoot\rs\project 1\document.txt"
答案2
最简单的方法是使用 PowerShell 代码中的 .Net URI 类:
[System.Uri]'\sharepoint.business.com\DavWWWRoot\rs\project 1\document.txt' 将为您提供一个 URI,然后“AbsoluteURI”属性将以字符串形式为您提供该 URI。因此:
([System.Uri]'\\sharepoint.business.com\DavWWWRoot\rs\project 1\document.txt').AbsoluteUri
会给你你想要的。
答案3
有一个简单且安全的在线转换器可以完成这项工作:UNC 路径到文件 URI 在线转换器。
它是用 Javascript 实现的,并且转换完全在浏览器中完成,因此路径不会提交给任何服务器。
答案4
结合 Andrew 和 Devyn 提出的观点,我有了这个函数,它可以接受相对文件路径,例如“.\Documents\test.txt”:
function ConvertTo-FileUri {
param (
[Parameter(Mandatory)]
[string]
$Path
)
([system.uri](Get-Item $Path).FullName).AbsoluteUri
}