Поиск файлов, имена которых частично соответствуют строкам в переменной - PullRequest
0 голосов
/ 27 апреля 2020

Первый раз постер. Я ищу некоторую помощь, так как я очень редко балуюсь сценариями и только очень на очень базовом уровне.

Меня попросили написать скрипт, который ищет каждое слово из списка в 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 формате.

С уважением.

...