我正在编写一个脚本,将文件夹中的这三个特定文件与当前日期进行比较。我想将前两个文件相互比较,谁是最新的文件,它将与第三个文件进行比较,无论哪个文件最新,都将与当前日期进行比较,如果它与当前日期匹配,则调用停止进程,如果它较低,则调用批处理脚本,到目前为止,我从以前的脚本中得到了这个
$fileNameC = "D:ForbesIT_Dental_Software_BackupClearBackUp.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:ForbesITBackupCheckbackup_is_old.bat
}
}
else {
start-process C:ForbesITBackupCheckmissing_folder.bat
}
我是根据你在问题中所说的内容构建的。
$file1 = "C:temp1.txt"
$file2 = "C:tempaccounts.txt"
$file3 = "C:tempdata.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:ForbesITBackupCheckbackup_is_old.bat
}
} Else {
start-process C:ForbesITBackupCheckmissing_folder.bat
}
这将检查所有三个$file
,并根据LastWriteTime
找到最新的一个。然后比较一下这个日期,看看是不是从今天开始。如果是,则PowerShell退出。如果日期较旧,则调用您的批次。
我不知道如何适应start-process C:ForbesITBackupCheckmissing_folder.bat
,因为你没有在问题中提到它。
根据评论更新
我添加了另一个If !((test-path $files) -eq $false).Count
。test-path
将返回布尔值数组。如果any为false,则将调用丢失的文件夹批处理。0在转换为布尔值时为false FYI。