もくじ
📝 はじめに
PowerShellで作業していると、
「相対パスを指定したけれど、実際にはどこを指しているのか分からない」
「ワイルドカードを使った結果を正確なパスとして扱いたい」
と感じることはありませんか?
そんなときに役立つのが
Resolve-Path です。
相対パスやワイルドカードを展開し、
実際に存在する絶対パスへ変換してくれるコマンドです。
- 相対パスを正確な絶対パスに変換したい
- ワイルドカード指定の結果を確認したい
- スクリプト内で確実なパスを扱いたい
✅ このコマンドでできること(要点)
- 相対パスを絶対パスに変換できる
- ワイルドカードを展開できる
- 実在するパスのみを取得できる
- 曖昧な指定を明確なパスにできる
✅ Resolve-Path でできること
Resolve-Path は、
指定したパスを評価し、
実際に存在しているパスを絶対パスとして返すコマンドです。
相対パス(. や ..)や
ワイルドカード(*)を含んだ指定でも、
正確な結果を取得できます。
考え方としては「曖昧な住所を正式な住所に直す」イメージです。
🧩 基本構文
Resolve-Path "変換したいパス"
指定したパスが存在していれば、絶対パスが返されます。
▶ 基本的な使い方(まずこれだけ)
🔹 相対パスを絶対パスに変換する
Resolve-Path .\test.txt
現在の作業ディレクトリを基準に、
絶対パスが表示されていれば成功です。
この結果が表示されていれば問題ありません。
🔹 親ディレクトリを含む指定
Resolve-Path ..\Logs
上位フォルダを含めた指定でも、
正確な絶対パスに変換されます。
エラーが出なければ正常に動作しています。
🛠 よく使われる指定例
🔹 ワイルドカードを展開する
Resolve-Path C:\Windows\*.exe
条件に一致するすべてのファイルが、
絶対パスとして一覧で取得されます。
🔹 結果をパス文字列として使う
(Resolve-Path .\test.txt).Path
.Path を使うと、
文字列として後続処理に渡せます。
💼 実務でよく使う使用例(応用)
🔹 他コマンドに安全に渡す
$full = Resolve-Path .\data.csv
Import-Csv $full
🔹 複数ファイルを確実に処理
Resolve-Path .\logs\*.log |
ForEach-Object {
Get-Content $_
}
- Get-Location と組み合わせて基準確認
- Join-Path で生成したパスを確定
- Test-Path で事前チェック
🧩 よくある勘違い・つまずきポイント
- 存在しないパスは変換できずエラーになる
- 結果はオブジェクトで返される
- ワイルドカード指定では複数結果になる
- 文字列連結の代わりにはならない
- 存在確認目的なら Test-Path の方が適している
🔄 cmdとの違いについて
cmd では相対パスがそのまま扱われますが、
PowerShell の Resolve-Path は
実在するパスを評価して絶対パスとして返します。
スクリプトの安全性・可読性が大きく向上します。
⚠ エラー・うまく動かないときの確認ポイント
- 指定したパスが実際に存在しているか
- 相対パスの基準ディレクトリを理解しているか
- ワイルドカード指定が広すぎないか
- 結果を .Path で取り出しているか
🧠 注意点
Resolve-Path は
「存在しているパス」しか扱えません。
これから作成予定のパスを扱う場合は、
Join-Path を使うのが適切です。
📌 まとめ
- Resolve-Path はパスを絶対パスに変換するコマンド
- 相対パスやワイルドカードを正確に展開できる
- 実在するパスのみを扱う点が特徴
- 次は Join-Path / Test-Path と組み合わせると理解が深まる
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- 相対パスを絶対パスに変換したい
- 正確なパスを取得したい
