このエントリーをはてなブックマークに追加


Test-Pathコマンドレットを使用してファイル・フォルダの存在確認を行う方法

PowerShellのTest-Pathコマンドレットを使用することにより、ファイル・フォルダの有無を確認することができます。
また、Test-Pathはレジストリ内に指定したキーワードが存在するかも確認することができます。
以下に使用例を記します。


関連記事

Test-Pathコマンドレットを使ってみる

Test-Pathコマンドレットを使って、ファイル、フォルダ、レジストリの存在確認をしてみます。

Test-Pathコマンドレットでファイルの存在確認

Test-Pathコマンドレットに存在確認するファイル名を指定し実行した結果です。
ワイルドカードも利用することができます。
存在する場合は、True, 存在しない場合はFalseが返却されているのが確認できます。

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コマンドレットでディレクトリの存在確認

上記のファイルの存在確認同様、フォルダ(ディレクトリ)を指定して実行した結果です。
存在する場合は、True, 存在しない場合はFalseが返却されているのが確認できます。

PS C:\> Test-Path .\Users
True
PS C:\> Test-Path .\U*
True
PS C:\> Test-Path .\Users\Linux
False

レジストリの確認

HKEY_LOCAL_MACHINEレジストリの存在確認を実行した結果です。
存在する場合は、True, 存在しない場合はFalseが返却されているのが確認できます。

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の実行例を以下に記します。
実行例では、3つの引数を渡し3つのファイルの存在チェックを行っています。

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!


添付ファイル: fileFileExists.zip 1613件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-09-30 (金) 23:34:27