web-dev-qa-db-ja.com

サードパーティのツールを使用せずに、または手動で、UNC WindowsファイルパスをファイルURIに変換するにはどうすればよいですか?

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
Gabriel Fair

最も簡単なアプローチは、PowerShellコードの.NetURIクラスを使用することです。

[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

あなたが望むものをあなたに与えるでしょう。

4
Andrew Ducker

PowerShellは、上記のような面倒な繰り返しタスクを自動化する優れた方法です。

PowerShellの使用

上記のUNCパスをファイルURIに変換することは、PowerShell(すべてのバージョン)を使用して非常に簡単で、必要なのは format と置き換え operators だけです。次に例を示します。

$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"
3
Devyn Spencer

この作業を行うシンプルで安全なオンラインコンバーターがあります ファイルパスへのUNCパスオンラインコンバーター

これはJavascriptで実装され、変換は完全にブラウザーで行われるため、パスはどのサーバーにも送信されません。

1
nize

AndrewとDevynが思いついたものを組み合わせると、「。\ Documents\test.txt」のように、相対パスも受け入れるこの関数があります。

function ConvertTo-FileUri {
    param (
        [Parameter(Mandatory)]
        [string]
        $Path
    )
    ([system.uri](Get-Item $Path).FullName).AbsoluteUri
}
1
Brad Charboneau