以下の内容はhttps://coublood.hatenablog.com/entry/2023/08/19/150000より取得しました。


Windowsで Linuxのrealpathのような値を取得したい

バッチやシェルスクリプトで、正規化された絶対パスを取得したいケースがありました。

 

Linuxの場合は、realpathコマンドという便利なものがありますが、

# realpath /home/user1/../../tmp
/tmp

Windowsのbatだとそういう便利な関数はなさそう…。

powershellとか使えば別だと思いますが…)

 

間にデリミタが複数挟まっていたり、相対パスが入っていたりすると、色々と弊害が置きかねないため、パスをきれいに取る方法はないかな…と考えていたのですが、意外に簡単にできました。

 

set target_path=%~1
set target_path_drive=%~d1%
set target_path_folder=%~p1%
set target_path_file=%~n1%

set target_path_absolute_path=%target_path_drive%%target_path_folder%%target_path_file%

とすると、以下のようになります。

 

■引数が「E:」の場合

targetpath_drive=E:
targetpath_folder=¥
targetpath_file=
targetpath_absolute_path=E:¥

 

■引数が「C:¥Windows¥..¥Program Files\test.txt」の場合

targetpath_drive=C:
targetpath_folder=¥Program Files¥
targetpath_file=test.txt
targetpath_absolute_path=C:¥Program Files¥test.txt

となりました。

 

%~p1%相対パスをきれいに処理してくれるみたいなので、これはありがたいです。

パスチェックとかで操作が厄介になるなら、一度引数で渡して処理してしまうのがいいかもしれませんね。




以上の内容はhttps://coublood.hatenablog.com/entry/2023/08/19/150000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14