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にすばやく変換する方法があるかどうか疑問に思っていました。
自分のマシンに管理者権限がないため、ソフトウェアをインストールできません。
最も簡単なアプローチは、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
あなたが望むものをあなたに与えるでしょう。
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"
この作業を行うシンプルで安全なオンラインコンバーターがあります ファイルパスへのUNCパスオンラインコンバーター 。
これはJavascriptで実装され、変換は完全にブラウザーで行われるため、パスはどのサーバーにも送信されません。
AndrewとDevynが思いついたものを組み合わせると、「。\ Documents\test.txt」のように、相対パスも受け入れるこの関数があります。
function ConvertTo-FileUri {
param (
[Parameter(Mandatory)]
[string]
$Path
)
([system.uri](Get-Item $Path).FullName).AbsoluteUri
}