С помощью chatgpt сделал такой скрипт powershell.
По задумке он должен записывать дату изменения файлов в каталоге в текстовые файлы и при последующих запусках сравнивать и создавать файл backup.need если даты различаются, но он почему то всегда создает этот файл backup.need? как будто есть различия в дате изменения всех файлов в каталоге. Думал разные форматы времени и пробовал менять написание в 24 строке, но ничего не изменилось. Сам в powershell почти не разбираюсь и наладка мне дается тяжело. Подскажите пожалуйста в чем проблема или куда копать?
# Путь к каталогу с файлами
$sourcePath = "D:\_WORK\"
# Путь к каталогу для сохранения даты изменения файлов
$datePath = "T:\RAID_BACKUP\dates"
# Путь к каталогу для создания файла backup.need
$backupPath = "T:\RAID_BACKUP\Scripts1"
# Получаем список файлов из каталога $sourcePath
$files = Get-ChildItem $sourcePath
# Перебираем каждый файл
foreach ($file in $files) {
# Формируем путь к файлу с датой изменения
$dateFilePath = Join-Path -Path $datePath -ChildPath "date_$($file.Name).txt"
# Проверяем, существует ли файл с датой изменения
if (Test-Path $dateFilePath) {
# Считываем дату изменения из файла
$savedDate = Get-Content $dateFilePath
# 23 строка Проверяем, совпадает ли сохраненная дата с текущей датой изменения файла
if ($savedDate -ne $file.LastWriteTime.ToString("yyyy/MM/dd HH:mm:ss")) {
# Создаем файл backup.need в указанном каталоге
New-Item -Path $backupPath -Name "backup.need" -ItemType File -Force
}
}
else {
# Создаем файл с датой изменения, если он не существует
$file.LastWriteTime | Out-File -FilePath $dateFilePath
}
# Обновляем дату изменения в файле
$file.LastWriteTime | Out-File -FilePath $dateFilePath -Force
}
24 строку пробовал менять на эти варианты
# if ($savedDate -ne $file.LastWriteTime.ToString()) {
# if ($savedDate -ne ((Get-Item $file).LastWriteTime)) {