Test-Pathコマンドレットを使用してファイル・フォルダの存在確認を行う方法 †PowerShellのTest-Pathコマンドレットを使用することにより、ファイル・フォルダの有無を確認することができます。 関連記事 †
Test-Pathコマンドレットを使ってみる †Test-Pathコマンドレットを使って、ファイル、フォルダ、レジストリの存在確認をしてみます。 Test-Pathコマンドレットでファイルの存在確認 †Test-Pathコマンドレットに存在確認するファイル名を指定し実行した結果です。 PS C:\Windows> dir *.log ディレクトリ: C:\Windows Mode LastWriteTime Length Name ---- ------------- ------ ---- <snip> -a--- 2012/01/11 16:09 1313 TSSysprep.log -a--- 2012/09/14 11:17 1534693 WindowsUpdate.log PS C:\Windows> Test-Path .\WindowsUpdate.log True PS C:\Windows> Test-Path .\*.log True PS C:\Windows> Test-Path .\*.txt False PS C:\Windows> Test-Pathコマンドレットでディレクトリの存在確認 †上記のファイルの存在確認同様、フォルダ(ディレクトリ)を指定して実行した結果です。 PS C:\> Test-Path .\Users True PS C:\> Test-Path .\U* True PS C:\> Test-Path .\Users\Linux False レジストリの確認 †HKEY_LOCAL_MACHINEレジストリの存在確認を実行した結果です。 PS C:\> Test-Path HKLM:\HARDWARE True PS C:\> Test-Path HKLM:\HARDWARE\DESCRIPTION True PS C:\> Test-Path HKLM:\HARDWARE\DESCRIPTION\System True PS C:\> Test-Path HKLM:\HARDWARE\DESCRIPTION\System\CentralProcessor True HKLM, HKCUなどのレジストリの省略名については、以下の記事を参照してください。 ifを使って判定してみる †if構文を使ってファイルの存在確認を行うスクリプトを以下に記します。 Test-Pathコマンドレットを使用したサンプルコード †引数に指定されたファイルをTest-Pathコマンドレットを使い存在チェックを行います。 #################### # FileExists.ps1 #################### function usage { Write-Host "Usage: "$Script:MyInvocation.MyCommand.Name "<filename> <filename> ..." exit 1 } if ($args.length -eq 0) { usage } foreach($f in $args) { if (Test-Path $f) { Write-Host $f is found! } else { Write-Host $f is not found! } } サンプルコードの実行例 †上記のFileExists.ps1の実行例を以下に記します。 PS Z:\sample> .\FileExists.ps1 C:\Windows C:\Windows\WindowsUpdate.log C:\Linux C:\Windows is found! C:\Windows\WindowsUpdate.log is found! C:\Linux is not found! |