Выберите строку из текстового файла и создайте переменную - PullRequest
0 голосов
/ 05 марта 2019

У меня есть текстовый файл, содержащий строку, мне нужно сделать переменную.Мне нужно, чтобы значение для «файла» было сохранено как переменная.Как я могу перехватить это и сделать его переменной: "\ APPSRV \ I \ Run \ OPTI \ CLIENT \ 20171031 \ 25490175 \ Data \ brtctybv \".Эти данные будут меняться для каждого файла, но он будет сохранять тот же формат, он будет начинаться с \ и заканчиваться \

Пример текстового файла

order_id = 25490175-brtctybv
file     = \\APPSRV\I\Run\OPTI\CLIENT\20171031\25490175\Data\brtctybv\
copies   = 1
volume   = 20171031-brtctybv
label    = \\domain.com\prodmaster\jobs\OPTI\CLIENT\Cdlab\somefile.file
merge    = \\APPSRV\I\Run\OPTI\CLIENT\20171031\25490175\mrg\25490175-brtctybv.MRG
FIXATE   = NOAPPEND

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

регулярные выражения мощные, но сложные;иногда существуют концептуально более простые альтернативы:

PS> ((Get-Content -Raw file.txt).Replace('\', '\\') | ConvertFrom-StringData).file

\\APPSRV\I\Run\OPTI\CLIENT\20171031\25490175\Data\brtctybv\
  • Командлет ConvertFrom-StringData создан для анализа пар ключ-значение, разделенных =

  • \ в значениях интерпретируется как экранирующий символ , следовательно, удваивает \ во входном файле с .Replace('\', '\\').

  • Результатом является хеш-таблица (тип [hashtable]);Get-Content -Raw - входной файл, читаемый как одиночная строка - используется для обеспечения вывода хэш-таблицы single );доступ к его ключу file возвращает соответствующее значение.

0 голосов
/ 05 марта 2019
$file = ((Get-Content -path file.txt) | Select-String -pattern "^file\s*=\s*(\\\\.*\\)").matches.groups[1].value
$file

См. Regex Demo , чтобы увидеть регулярное выражение в действии..matches.groups[1].value захватывает значение группы захвата 1. Группа захвата создается () в шаблоне.См. Select-String для получения дополнительной информации о командлете.

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