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

2

В Сообщение блога от 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 файла.

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

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

Ответы:

2

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:{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"
Devyn Spencer
источник
1

Существует простой и безопасный онлайн-конвертер, который выполняет эту работу: UNC путь к файлу URI онлайн-конвертер ,

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

nize
источник
1

Самый простой подход - использовать класс .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

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

Andrew Ducker
источник