Как мне сопоставить имя файла без кавычек с именем с кавычками? - PullRequest
0 голосов
/ 05 апреля 2020

Если кто-то знает более подходящее название, пожалуйста, скажите мне.

Приведенные ниже примеры:

Три файла: 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 год как мою самую большую проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...