diaryこの広告は、90日以上更新していないブログに表示しています。Windows概要Windowsのパス文字列を他の言語に渡す際、円記号(¥)もといバックスラッシュ(\)を毎回処理するのが面倒エクスプローラなどのGUIメニューで選択するときにスラッシュ(/)を区切り文字とする標準的なパス文字列を取得したい。Powershellスクリプトを作成して、右クリックメニューの「送る(SendTo)」に登録することで簡単に取得できた。歴史的な経緯もあり*1Windowsのパスは円記号もといバックスラッシュ(\)区切り。バックスラッシュはRやPythonといった各種プログラミング言語ではエスケープ文字として使われている。このため、例えばRで以下のようにバックスラッシュが含まれるWindowsのパス文字列を直接利用できない。setwd("D:\\SandBox\\")大したことではないのだが、毎度バックスラッシュを処理して渡すのはめんどくさいので簡単にしたい。方法Windowsのエクスプローラには、ファイル・フォルダの右クリックメニューの中に「送る(SendTo)」というメニューがある。このメニューはSendToフォルダにあるショートカットの集合体であり、実行すると選択したファイル・フォルダを引数としてそのショートカットを起動してくれる。そこで、エクスプローラ上で簡単にバックスラッシュをスラッシュに変換した文字列を取得するために、パス文字列を変換するスクリプトを作成してそのショートカットをSendToに登録した。これでファイル・フォルダを右クリックしてショートカットを選択すると、スラッシュで区切られた文字列を取得できるようになる。以下のようなGet-FilePathWithSlash.ps1を作成する。cf.Powershell上で、パイプで渡すと文字化けする。Set-ClipboardSendToフォルダの場所を確認する。プログラミング日記#SendToフォルダの場所[Environment]::GetFolderPath('SendTo')Path----C:\Users\majima_ko16\AppData\Roaming\Microsoft\Windows\SendTo上記のフォルダにショートカットを任意の名前で作成し、プロパティのリンク先を以下のように書き換える。"D:\<scriptPath>\Get-FilePathWithSlash.ps1"その他この方法を応用するとでCygwin用のパスも作れるだろう(cygpathはあるが)。