トッカンソフトウェア

PowerShell フォルダ内の最終更新日を取得



フォルダ内の最終更新日を取得するサンプルを作ってみました。

フォルダ内の最終更新日を取得

$basePathに対象フォルダを指定します。
.txtファイルのみを対象としています。


#対象フォルダ
$basePath = "C:\work\from"

# 指定したフォルダ内のファイルをすべて取得する
$files = Get-ChildItem -Path $basePath -Recurse -Filter *.txt

# 最終更新日のファイルを取得
$latestUpdateFile = $files | Sort-Object LastWriteTime -Descending | Select-Object -First 1 


# 最終更新日のファイルパス
Write-Host $latestUpdateFile.FullName
# 最終更新日
Write-Host $latestUpdateFile.LastWriteTime


最終更新日でソートして、最初のファイルを取得しています。

Javaプロジェクトのjavaファイルとjarファイルの更新日を比較するサンプル

$dirPathにworkspaceフォルダを指定します。
Spで始まるプロジェクトのみを対象としています。

function lastUpdateFile($files, $dir) {
   
    if ($files.Length -eq 0) {

        Write-Host $dir "に対象ファイルが存在しません"
        return $null;
    }

    return $files | Sort-Object LastWriteTime -Descending | Select-Object -First 1;
}

function check($basePath) {

    #javaファイルの最終更新日取得
    $srcDir = Join-Path $basePath "src"

    $srcFiles = Get-ChildItem -Path $srcDir -Recurse -Filter *.java

    $javaFile = lastUpdateFile $srcFiles $srcDir;
    
    #jarファイルの最終更新日取得
    $targetDir = Join-Path $basePath "target"

    $targetFiles = Get-ChildItem -Path $targetDir -Filter *.jar
    
    $jarFile = lastUpdateFile $targetFiles $targetDir 
    
    #更新日比較
    if ( $null -ne $javaFile -And $null -ne $jarFile ) {
        if ( $javaFile.LastWriteTime -gt $jarFile.LastWriteTime ) {
            Write-Host $jarFile.FullName "が古い"
        }
    }
}

#フォルダ指定
$dirPath = "C:\eclipseee\workspace\"

$dirs = Get-ChildItem -Path $dirPath -Filter Sp*

foreach ($dir in $dirs) {
    check $dir.FullName
}

Javaプロジェクトで作成したJarファイルとそのコピー先の更新日を比較するサンプル

$fromJarsでコピー元のファイル情報を指定して、$toPathにコピー先の情報を指定します。

$fromJars = Get-ChildItem -Path "C:\eclipseee\workspace\S*\target\*.jar" 

foreach ($fromJar in $fromJars) {
    $toPath = "C:\work\to\*\" + $fromJar.Name
    $toJars = Get-ChildItem -Path $toPath

    if ($toJars.Length -eq 0) {

        Write-Host $fromJar.FullName "がコピー先に存在しません"
        continue
    } 

    $toJar = $toJars | Select-Object -First 1 

    if ( $fromJar.LastWriteTime -gt $toJar.LastWriteTime ) {
        Write-Host $toJar.FullName "が古い"
        #Copy-Item $fromJar.FullName $toJar.FullName -Force
    }
}


ページのトップへ戻る