Como posso converter um caminho de arquivo UNC Windows para um URI de Arquivo sem usar ferramentas de terceiros ou manualmente?

2

Em uma postagem no blog da Microsoft, eles ilustram como um URI pode ser gravado para especificar os caminhos do arquivo do sistema local.

Ao compartilhar o caminho para os arquivos de compartilhamento de rede, alguns programas de bate-papo abrirão esses arquivos em um navegador.

Então eu entrego as alterações necessárias para transformar o caminho do Windows em um arquivo URI

UNC Windows path: \sharepoint.business.com\DavWWWRoot\rs\project 1\document.txt

torna-se

URI: file://sharepoint.business.com/DavWWWRoot/rs/project%201/document.txt

Estou cansado de codificar manualmente todas as vezes e queria saber se havia uma maneira de converter rapidamente para um URI de arquivo.

Eu não tenho permissões de administrador na minha máquina, por isso não posso instalar o software.

    
por Gabriel Fair 23.08.2016 / 17:58

3 respostas

2

O PowerShell é uma excelente maneira de automatizar tarefas recorrentes e tediosas como as descritas acima!

Usando o PowerShell

Converter o caminho UNC acima em um URI de arquivo é extremamente simples usando o PowerShell (todas as versões) e requer apenas o format e substitua operadores , por exemplo :

$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")

Que produz o seguinte:

file://sharepoint.business.com/DavWWWRoot/rs/project%201/document.txt

Como uma função reutilizável

Por fim, tarefas recorrentes como as descritas acima devem ser feitas nas funções do PowerShell sempre que possível. Isso economiza tempo no futuro e garante que cada tarefa seja sempre executada exatamente da mesma maneira.

A seguinte função é equivalente ao acima:

function ConvertTo-FileUri {
    param (
        [Parameter(Mandatory)]
        [string]
        $Path
    )

    $SanitizedPath = $Path -replace "\", "/" -replace " ", "%20"
    "file:{0}" -f $SanitizedPath
}

Quando a função tiver sido definida (e carregada na sessão atual do PowerShell), basta chamar a função pelo nome e fornecer o caminho UNC a ser convertido como um parâmetro, por exemplo:

ConvertTo-FileUri -Path "\sharepoint.business.com\DavWWWRoot\rs\project 1\document.txt"
    
por 16.11.2016 / 19:00
1

Existe um conversor online simples e seguro que faz este trabalho: Conversor on-line do UNC Path to File URI .

Ele é implementado com Javascript e a transformação é feita completamente no navegador para que o caminho não seja enviado a nenhum servidor.

    
por 07.02.2017 / 12:54
1

A abordagem mais simples é usar a classe .Net URI do seu código do PowerShell:

[System.Uri] '\ sharepoint.business.com \ DavWWWRoot \ rs \ projeto 1 \ document.txt' fornecerá um URI e, em seguida, a propriedade "AbsoluteURI" fornecerá a você como uma string. Então:

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

vai te dar o que você quer.

    
por 18.09.2018 / 16:02