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 файла.

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

3 ответа3

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"
1

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .