Как можно преобразовать путь к файлу UNC Windows в URI-файл без использования сторонних инструментов или вручную?

6239
Gabriel Fair

В своем блоге от Microsoft они показывают, как можно написать 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 файла.

У меня нет прав администратора на моей машине, поэтому я не могу установить программное обеспечение.

2
Есть ли у них какие-либо предпочтительные инструменты / ограничения? Возможно, это можно сделать в чем-то вроде Notepad ++ с несколькими операциями поиска / замены, Excel, любым языком программирования общего назначения, возможно, сценариями PowerShell и т. Д. nijave 8 лет назад 0
никаких ограничений, я просто не знал, был ли ярлык «Shift + правый клик» Gabriel Fair 8 лет назад 0

3 ответа на вопрос

2
Devyn Spencer

PowerShell - это отличный способ автоматизировать утомительные повторяющиеся задачи, подобные описанным выше!

Использование PowerShell

Преобразование указанного выше UNC-пути в URI файла чрезвычайно просто с помощью PowerShell (все версии) и требует только операторов форматирования и замены, например:

$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:" -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:" -f $SanitizedPath } 

После того, как функция была определена (и загружена в текущий сеанс PowerShell), просто вызовите функцию по имени и укажите путь UNC для преобразования в качестве параметра, например:

ConvertTo-FileUri -Path "\\sharepoint.business.com\DavWWWRoot\rs\project 1\document.txt" 
1
nize

Существует простой и безопасный онлайн-конвертер, выполняющий эту работу: UNC Path to File URI Online Converter .

Он реализован с использованием Javascript, и преобразование полностью выполняется в браузере, поэтому путь не передается ни на один сервер.

1
Andrew Ducker

Самый простой подход - использовать класс .Net URI из вашего кода PowerShell:

[System.Uri] '\ sharepoint.business.com \ DavWWWRoot \ rs \ project 1 \ document.txt' выдаст вам URI, а затем свойство «AbsoluteURI» выдаст его в виде строки. Так:

([System.Uri]'\\sharepoint.business.com\DavWWWRoot\rs\project 1\document.txt').AbsoluteUri 

даст вам то, что вы хотите.