PowerShell 中的三个文件与当前日期的比较

Three File Comparision in PowerShell with current date

我正在编写一个脚本来将文件夹中的这三个特定文件与当前日期进行比较。 我想将前两个文件相互比较,谁是最新文件,它与第三个文件进行比较,最新的文件与当前日期进行比较,如果它与当前日期匹配,则调用停止过程如果调用它的下部批处理脚本,到目前为止我从我以前的脚本中得到了这个

$fileNameC = "D:\ForbesIT_Dental_Software_Backup\ClearBackUp.dat-bak"
$fileNameB = 
$filenameC = 

if ( test-path $fileNameA ) ( test-path $filenameB {
  if ( (get-item $fileName).LastWriteTime -ge (get-date).Date ) {
    stop-process -Id $PID
  }
else {
    start-process C:\ForbesIT\BackupCheck\backup_is_old.bat
     }  
  }
else {
    start-process C:\ForbesIT\BackupCheck\missing_folder.bat
  }  

我根据你在问题中所说的构建了这个。

$file1 = "C:\temp.txt"
$file2 = "C:\temp\accounts.txt"
$file3 = "C:\temp\data.log2"

$files = $file1,$file2,$file3

If(!((test-path $files) -eq $false).Count){
    $newestFile = Get-Item $files | Sort-object LastWriteTime -Descending | Select -First 1
    If($newestFile.LastWriteTime -ge (get-date).Date){
        Stop-Process -Id $PID
    } Else {
        start-process C:\ForbesIT\BackupCheck\backup_is_old.bat
    }
} Else {
    start-process C:\ForbesIT\BackupCheck\missing_folder.bat
}

这将检查所有三个 $file 并根据 LastWriteTime 找到最新的一个。然后比较那个日期,看看它是否从今天开始。如果是,则 PowerShell 退出。如果日期较早,则调用您的批次。

我不明白如何适应 start-process C:\ForbesIT\BackupCheck\missing_folder.bat 因为你没有在问题中提到它。

根据评论更新

我添加了另一个 If !((test-path $files) -eq $false).Counttest-path 将 return 一个布尔数组。如果有任何错误,则将调用丢失的文件夹批处理。 0 转换为布尔值时为假,仅供参考。