从Powershell中的字符串中获取值

时间:2014-12-15 04:32:18

标签: powershell

我想要实现的是加载.txt文件并将字符串BatchCust1="1"的值输入到我的脚本中。为了更加精确,我只需要1,因此请删除BatchCust1=""个字符,并仅保留""中的值。

我可以成功获取整个字符串,但是我无法从中获取价值。我的代码目前是:

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

2 个答案:

答案 0 :(得分: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] }

答案 1 :(得分:0)

您可以像这样使用正则表达式

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