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
}
}
ページのトップへ戻る