【PowerShell】ファイル・フォルダの存在を確認する方法

# はじめに
PowerShellで、ファイル・フォルダの存在を確認する方法について今回はアウトプットします。
ファイル等の存在の判定が必要になるときに便利です。

# PowerShellスクリプト実行環境

- **OS**
<br>Microsoft Windows 10 Pro

```powershell:OS情報
PS C:\Users\owner> (Get-WmiObject Win32_OperatingSystem).Caption
Microsoft Windows 10 Pro
```

- **PowerShellバージョン**
<br>5.1.18362.752

```powershell:PowerShellバージョン
PS C:\Users\owner>  $PSVersionTable

Name                           Value                                                                                                                                                                                                                                                
----                           -----                                                                                                                                                                                                                                                
PSVersion                      5.1.18362.752                                                                                                                                                                                                                                        
PSEdition                      Desktop                                                                                                                                                                                                                                              
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                                                                                                                              
BuildVersion                   10.0.18362.752                                                                                                                                                                                                                                       
CLRVersion                     4.0.30319.42000                                                                                                                                                                                                                                      
WSManStackVersion              3.0                                                                                                                                                                                                                                                  
PSRemotingProtocolVersion      2.3                                                                                                                                                                                                                                                  
SerializationVersion           1.1.0.1                                                                                                                                                                                                                                              

```

# 使用コマンド

使用コマンドはこちらになります。

```powershell:使用コマンド
Test-Path <ファイル名>
```

**ファイル/フォルダ/レジストリの確認で使用することが可能**

# 使用例

ファイル/フォルダ/レジストリの確認でそれぞれ使用した場合の例を紹介します。

## ファイル単体の場合

![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/14c74c2b-b0dc-b55c-6a65-f0dbf0759a74.jpeg)


- `C:\Users\owner\Desktop\tmp\test.txt`(テキストファイル)を確認したい場合

```powershell:実行例
PS C:\Users\owner> Test-Path C:\Users\owner\Desktop\tmp\test.txt
True
```

- ファイル名を誤った場合

```powershell:実行例
PS C:\Users\owner> Test-Path C:\Users\owner\Desktop\tmp\test.tx
False
```

## フォルダの場合

![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/1507b368-fd21-2661-68e7-4cc8ecc519c0.jpeg)


- `C:\Users\owner\Desktop\tmp`(フォルダ)を確認したい場合

```powershell:実行例
PS C:\Users\owner> Test-Path C:\Users\owner\Desktop\tmp
True
```

- フォルダ名を誤った場合

```powershell:実行例
PS C:\Users\owner> Test-Path C:\Users\owner\Desktop\tm
False
```

## レジストリの場合

![4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/636476/808e817f-7583-7f91-c14c-1bd89026cb4d.jpeg)


- `HKLM:\SOFTWARE\7-Zip`(レジストリ)を確認したい場合

```powershell:実行例
PS C:\Users\owner> Test-Path HKLM:\SOFTWARE\7-Zip
True
```

- レジストリ名を誤った場合

```powershell:実行例
PS C:\Users\owner> Test-Path HKLM:\SOFTWARE\7-Zi
False
```

# ファイルの存在判定をしてみる

`C:\Users\owner\Desktop\tmp\test.txt`(テキストファイル)が存在するか判定するスクリプトになります。

```powershell:test.ps1
# 「$result」にファイルパスを指定
$dir = "C:\Users\owner\Desktop\tmp\test.txt"

# ファイルが存在するか確認
if((Test-Path $dir) -eq "True"){
  Write-Host "True"
}else{
  Write-Host "False"
}
```

```powershell:実行結果
PS C:\Users\owner> C:\Users\owner\Desktop\scripts\test.ps1
False
```

# 参考リンク
[Test-Pathコマンドレットを使用してファイル・フォルダの存在確認を行う方法](https://win.just4fun.biz/?PowerShell/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%BB%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E5%AD%98%E5%9C%A8%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%BBTest-Path)