「このファイル、本当に存在してる?」「スクリプト実行前に、指定したフォルダがあるか確認したい」
そんなときに便利なのが、PowerShellのTest-Path
コマンドレットです。
このコマンドは、ファイルやフォルダ、レジストリキー、環境変数などが存在するかを一発でチェックできる、超実用的な関数です。
この記事では、Test-Path
の基本的な使い方から、条件分岐やファイルチェックへの応用方法まで、初心者にもわかりやすく解説します!
Test-Pathとは?できることと特徴
Test-Path
は、PowerShellに標準で搭載されているコマンドレットで、指定したパスが存在するかどうかを確認するために使います。
特徴:
- 結果は
True
またはFalse
の 論理値(Boolean) で返される - ファイル・フォルダ・レジストリ・環境変数などあらゆるパスに対応
- 条件分岐やエラー回避に欠かせない
基本的な使い方|ファイルやフォルダの存在確認

ファイルの存在を確認:
Test-Path "C:\Temp\log.txt"
存在すれば True
、なければ False
を返します。
フォルダの確認も同じ:
Test-Path "C:\Temp"
パスにワイルドカードを使うことも可能:
Test-Path "C:\Temp\*.txt" # C:\Tempにtxtファイルが1つでもあればTrue
条件付き処理への応用(if文と組み合わせ)

例:ファイルが存在するかで処理を分岐
if (Test-Path "C:\Temp\log.txt") {
Write-Output "ファイルが存在します。"
} else {
Write-Output "ファイルが存在しません。"
}
存在チェック+エラーハンドリングの場面で非常に重宝します。
例:複数のファイルを一括確認
$files = @("C:\Temp\log1.txt", "C:\Temp\log2.txt", "C:\Temp\log3.txt")
foreach ($file in $files) {
if (Test-Path $file) {
Write-Output "$file は存在します。"
} else {
Write-Output "$file は見つかりません。"
}
}
応用①:ファイルがなければ作成
$file = "C:\Temp\sample.txt"
if (-not (Test-Path $file)) {
New-Item -ItemType File -Path $file
Write-Output "ファイルを作成しました。"
}
-not
を使えば「存在しない場合」の条件を簡潔に記述可能です。
フォルダがなければ作成する例:
$directory = "C:\Logs\Archive"
if (-not (Test-Path $directory)) {
New-Item -ItemType Directory -Path $directory
Write-Output "フォルダを作成しました: $directory"
}
応用②:レジストリ・変数・UNCパスの確認も可能

レジストリキーの存在確認:
Test-Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"
環境変数の存在確認:
Test-Path Env:USERNAME
ネットワーク共有パスの確認:
Test-Path "\\SERVER01\Share\Folder"
-PathType パラメータでファイルかフォルダかを指定:
Test-Path "C:\Windows" -PathType Container # フォルダ
Test-Path "C:\Windows\notepad.exe" -PathType Leaf # ファイル
ネットワークやレジストリを扱うスクリプトでは、存在確認は必須項目です。
よくあるエラーと注意点

問題 | 対策 |
---|---|
パスが正しいのにFalseになる | ダブルクォートの有無、エスケープ文字(\ )に注意 |
権限不足で確認できない | 管理者権限での実行が必要な場合も |
大文字・小文字の区別 | Windowsでは基本的に区別されませんが、他環境では注意が必要です |
ネットワークパスのタイムアウト | UNCパスの場合、接続できないと処理が遅くなることも |
エラー対策の例:Try-Catchと組み合わせる
try {
if (Test-Path "\\DisconnectedServer\Share") {
# 処理
}
} catch {
Write-Error "ネットワークパスへのアクセスでエラーが発生しました: $_"
}
まとめ
Test-Path
は、PowerShellスクリプトを書く際に欠かせない、最も基本的かつ強力な「確認用コマンド」です。
ファイルの有無、フォルダの存在、レジストリキーの検出など、幅広い場面で使えるため、スクリプトの安定性と安全性を大きく向上させることができます。
ポイントまとめ
Test-Path
はファイル・フォルダ・レジストリ・環境変数の存在確認に使えるif
文と組み合わせることで柔軟な条件分岐が可能-not
を使えば「なければ作成」などのロジックも簡単に実装-PathType
パラメータでファイルかフォルダかを区別できる- スクリプトエラーの予防・事前確認に最適
PowerShellスクリプトでファイル操作を行う際には、まずTest-Path
で存在チェックを行うことで、多くのエラーを事前に防ぐことができます。
自動化処理やバッチ処理を安定させるために、ぜひ活用してみてください!
コメント