Wie kann ich einen UNC-Windows-Dateipfad in einen Datei-URI konvertieren, ohne Tools von Drittanbietern oder von Hand verwenden zu müssen?

6263
Gabriel Fair

In einem Blogbeitrag von Microsoft wird veranschaulicht, wie ein URI geschrieben werden kann, um lokale Systemdateipfade anzugeben.

Beim Freigeben des Pfads für Netzwerkfreigabedateien öffnen einige Chat-Programme diese Dateien in einem Browser.

Also habe ich die notwendigen Änderungen vorgenommen, um den Windows-Pfad in einen Datei-URI umzuwandeln

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

wird

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

Ich bin jedes Mal müde von Hand zu programmieren und habe mich gefragt, ob es eine Möglichkeit gibt, schnell in eine Datei-URI zu konvertieren.

Ich habe keine Administratorrechte auf meinem Rechner, daher kann ich keine Software installieren.

2
Sind ihre bevorzugten Werkzeuge / Einschränkungen? Es könnte wahrscheinlich in etwas wie Notepad ++ mit ein paar Such- / Ersetzungsvorgängen, Excel, einer beliebigen Programmiersprache für allgemeine Zwecke, möglicherweise PowerShell-Scripting usw. ausgeführt werden nijave vor 7 Jahren 0
Keine Einschränkungen, ich wusste nur nicht, ob es eine Verknüpfung mit "Umschalt + Rechtsklick" gab Gabriel Fair vor 7 Jahren 0

3 Antworten auf die Frage

2
Devyn Spencer

PowerShell ist eine hervorragende Möglichkeit, um langwierige wiederkehrende Aufgaben wie die oben genannten zu automatisieren!

PowerShell verwenden

Das Konvertieren des oben genannten UNC-Pfads in einen Datei-URI ist mit PowerShell (alle Versionen) extrem einfach und erfordert nur die Operatoren zum Formatieren und Ersetzen. Beispiel:

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

Was ergibt folgendes:

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

Als wiederverwendbare Funktion

Schließlich sollten wiederkehrende Aufgaben wie die oben genannten in PowerShell-Funktionen ausgeführt werden, wann immer dies möglich ist. Dies spart Zeit in der Zukunft und stellt sicher, dass jede Aufgabe immer auf dieselbe Weise ausgeführt wird.

Die folgende Funktion entspricht dem Vorstehenden:

function ConvertTo-FileUri { param ( [Parameter(Mandatory)] [string] $Path )  $SanitizedPath = $Path -replace "\\", "/" -replace " ", "%20" "file:" -f $SanitizedPath } 

Wenn die Funktion definiert wurde (und in die aktuelle PowerShell-Sitzung geladen wurde), rufen Sie die Funktion einfach über den Namen auf und geben Sie den UNC-Pfad zum Konvertieren als Parameter an. Beispiel:

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

Es gibt einen einfachen und sicheren Online-Konverter, der diesen Job ausführt : UNC-Pfad zu Datei-URI-Online-Konverter .

Es wird mit Javascript implementiert und die Umwandlung wird vollständig im Browser ausgeführt, sodass der Pfad nicht an einen Server gesendet wird.

1
Andrew Ducker

Am einfachsten ist es, die .Net-URI-Klasse aus Ihrem PowerShell-Code zu verwenden:

[System.Uri] '\ sharepoint.business.com \ DavWWWRoot \ rs \ project 1 \ document.txt' gibt Ihnen einen URI, und dann wird Ihnen die Eigenschaft "AbsoluteURI" als String übergeben. So:

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

wird dir geben, was du willst.