Первый раз постер. Я ищу некоторую помощь, так как я очень редко балуюсь сценариями и только очень на очень базовом уровне.
Меня попросили написать скрипт, который ищет каждое слово из списка в txt в папке файлов резервных копий. Имена файлов не совсем совпадают с тем, что в списке, и есть три различных шаблона для сопоставления. Так что, если файл резервной копии отсутствует, он должен сгенерировать еще один текстовый файл с отсутствующими.
Так что я написал этот самый базовый c .bat скрипт.
@echo off
del missing backups.txt
FOR /F %%i IN (list.txt) do (@echo %%i
IF NOT EXIST D:\Backups\*XmlConf**%%i* (echo %%i >> missing backups.txt XML)
IF NOT EXIST D:\Backups\*user**%%i* (echo %%i >> missing backups.txt USERS)
IF NOT EXIST D:\Backups\*IVS**%%i* (echo %%i >> missing backups.txt CONFIGURACION)
)
Это работает довольно хорошо. Проблема в том, что мне нужно добавить условие: предполагается, что файлы были созданы за последние 24 часа. Здесь я попал в беду. Так как у летучей мыши, похоже, много сложностей, я впервые попробовал свои силы в Powershell.
Вот где я сейчас нахожусь, после многих модификаций:
$list = Get-Content -Path 'list.txt'
$bakups24 = Get-ChildItem -name -Path 'C:\BACKUPS' | Where-Object { $_.CreationTime -le (Get-Date).AddDays(-1) }
foreach ($f in $list) {
if-not ($backups24 -like "*$f*.*" {
$f | Out-File -Append -FilePath 'C:\Backup Check\Missing backups.txt'
}
}
Понятно , -подобное выражение по какой-то причине не работает, потому что я сделал так, чтобы файлы в c: резервные копии имели имена, включающие некоторые элементы в списке, а некоторые - нет. На данный момент я отказываюсь от трех разных шаблонов.
Хотелось бы получить некоторую помощь, мне все равно, если она в пакетном или Powershell формате.
С уважением.