2014-12-15 3 views
-1

То, что я пытаюсь достичь, - загрузить файл .txt и получить значение для строки BatchCust1="1" в мой скрипт. Чтобы быть более точным, мне нужен только 1, поэтому удалите символы BatchCust1="" и сохраните только значение в пределах "".Получение значения из строки в Powershell

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

Get-ChildItem -Path "directory\*.txt" | foreach ($_) 
    {$value = Get-Content $_ | Select-String BatchCust1} 
+0

Возвращает ли этот код 'BatchCust1 =" 1 "'? – xXhRQ8sD2L7Z

ответ

0

Вы можете использовать регулярные выражения, как этот

Get-Content .\directory*.txt |%{[regex]::matches($_,'BatchCust1="(.)"').Groups[1].Value} 
1

Одним из вариантов является использование -match оператора:

Get-ChildItem -Path "directory*.txt" | % { 
    $value = Get-Content $_ | 
      ? { $_ -match 'BatchCust1="(\d+)"' } | 
      % { $matches[1] } 
} 

внимание, что назначение матчей переменная внутри цикла получит вам только номер из последнего файла (несколько номеров, если в этом файле имеется более одной соответствующей строки). Если вы хотите, чтобы числа совпадали во всех файлах, вы должны изменить это на следующее:

$values = Get-ChildItem -Path "directory*.txt" | 
      Get-Content | 
      ? { $_ -match 'BatchCust1="(\d+)"' } | 
      % { $matches[1] } 
Смежные вопросы