もくじ
📝 はじめに
PowerShellでパスを扱っていると、
「ワイルドカードを含むパスを確定させたい」
「Provider形式ではなく、実際のパス文字列として扱いたい」
と感じることはありませんか?
そんなときに使われるのが
Convert-Path です。
一見すると「相対パスを作る」ように見えますが、
実際には存在するパスを解決し、実体のあるパス文字列に変換する
ためのコマンドです。
- ワイルドカードを含むパスを確定させたい
- Provider依存の表現を実パスとして扱いたい
- 後続コマンドに安全なパスを渡したい
✅ このコマンドでできること(要点)
- 存在するパスを実体のあるパス文字列に変換できる
- ワイルドカードを展開して確定パスを取得できる
- Provider形式ではない通常のパスとして扱える
- Resolve-Path と似ているが用途が異なる
✅ Convert-Path でできること
Convert-Path は、
指定したパスを評価し、
実際に存在するパスを文字列として返すコマンドです。
Resolve-Path がオブジェクトを返すのに対し、
Convert-Path は「パス文字列」として返す点が特徴です。
考え方としては「曖昧な指定を、実体のあるパスに確定させる」と覚えると分かりやすいでしょう。
🧩 基本構文
Convert-Path "変換したいパス"
指定したパスが存在していれば、確定したパスが返されます。
▶ 基本的な使い方(まずこれだけ)
🔹 相対パスを確定パスに変換する
Convert-Path .\test.txt
現在の作業ディレクトリを基準に、
実体のあるパスが表示されていれば成功です。
この結果が表示されていれば問題ありません。
🔹 ワイルドカードを含むパスを変換する
Convert-Path .\logs\*.log
条件に一致するファイルのパスが、
すべて展開されて返されます。
エラーが出なければ正常に動作しています。
🛠 よく使われる指定例
🔹 変数に格納して使う
$path = Convert-Path .\data.csv
$path
後続処理にそのまま渡せるパス文字列になります。
🔹 配列として扱う
$files = Convert-Path .\logs\*.log
複数ヒットした場合は、配列として取得されます。
💼 実務でよく使う使用例(応用)
🔹 Import-Csv などに安全に渡す
$csv = Convert-Path .\data\*.csv
Import-Csv $csv
🔹 存在確認後に処理を行う
if (Test-Path .\config.json) {
$config = Convert-Path .\config.json
}
- Test-Path で事前確認
- Join-Path で生成 → Convert-Path で確定
- Resolve-Path との使い分け
🧩 よくある勘違い・つまずきポイント
- 「相対パスを作る」コマンドではない
- 存在しないパスは変換できない
- 結果はオブジェクトではなく文字列
- ワイルドカードが複数ヒットすると配列になる
- 相対パスが欲しい場合は別の方法が必要
🔄 cmdとの違いについて
cmd ではパスは基本的に文字列として扱われますが、
PowerShell の Convert-Path は
Providerの解決を行ったうえで安全なパスを返します。
スクリプト向けの堅牢な設計が特徴です。
⚠ エラー・うまく動かないときの確認ポイント
- 指定したパスが実際に存在しているか
- ワイルドカードの指定が正しいか
- 配列として返ってきていないか
- 相対パスと絶対パスの違いを理解しているか
🧠 注意点
Convert-Path は
「存在しているパスを確定させる」ためのコマンドです。
相対パスそのものを生成したい場合は、
Resolve-Path -Relative など別の方法を検討しましょう。
📌 まとめ
- Convert-Path はパスを確定した文字列に変換するコマンド
- ワイルドカードや相対指定を安全に解決できる
- 存在しないパスは扱えない点に注意
- 用途に応じて Resolve-Path / Join-Path と使い分ける
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- パスを確定させて使いたい
- ワイルドカードを展開したい
