Если кто-то знает более подходящее название, пожалуйста, скажите мне.
Приведенные ниже примеры:
Три файла: Jacobs.Ladder.txt
, Emma.Unplugged.2020.txt
& Emma.txt
Три папки с именем: Jacobs.Ladder.2019
, Emma.Unplugged
& Emma
Три записи базы данных с именем: Jacob's Ladder
, Emma: Unplugged
& Emma
Мой сценарий PowerShell представлен с файлом, затем необходимо найти нужную папку, скопировать ее туда, затем найти запись в базе данных и обновить ее там. Мне нужен скрипт, который перехватывает все три случая.
Пока что я сделал следующее:
Я беру свойство файла BaseName
:
Jacobs.Ladder
, Emma.Unplugged
, Emma
Я использую Get-ChildItem
, чтобы поместить все каталоги в переменную, выполните:
$Directories | Where-Object -Property 'Name' -Contains $File.BaseName
Это находит точное совпадение , поэтому он найдет только папку Emma
Далее, если ничего не было найдено, я делаю:
$Directories | Where-Object -Property 'Name' -Like ('{0}*' -f $File.BaseName)
Это находит папка Jacobs.Ladder.2019
. Он уже нашел Emma
на предыдущем шаге, так что это было обработано. Однако он будет не , но найдет Emma.Unplugged
, потому что BaseName файла - Emma.Unplugged.2020
.
Так что это мой первый вызов / вопрос: как написать условие, которое соответствует * От 1059 * до Emma.Unplugged
?
Далее, чтобы сопоставить имя файла с записями базы данных, я начинаю с replace
, чтобы превратить точки в пробелы.
I затем поиск почти точного соответствия:
$Database | Where-Object -Property 'Name' -Like $FileNameWithSpaces.Replace(' ','*')
Я знаю, я мог бы просто заменить точки звездочками. Но я пока не знаю, будет ли имя с пробелами пригодиться где-то еще.
Хотя это и компенсирует двоеточие в Emma.Unplugged
, это снова находит только Emma
.
У меня есть вторая проблема: как сформировать мой запрос, чтобы он соответствовал (снова) Emma.Unplugged.2020
Emma: Unplugged
, но также Jacobs.Ladder
* Jacob's Ladder
?
Конечно, если вы можете вспомнить больше сценариев ios, которые я здесь не уловил, не стесняйтесь добавлять их в ваш код.
Что касается заголовка topi c, моя самая большая проблема это единственная цитата в слове. Прямо сейчас лучший способ, о котором я могу думать, - это если я на лету превращаю все имена баз данных в их имена файлов. Тогда Jacob's Ladder
станет Jacobs.Ladder
, и у меня будет совпадение. Что оставило бы 2020 год как мою самую большую проблему.