我想要实现的是加载.txt
文件并将字符串BatchCust1="1"
的值输入到我的脚本中。为了更加精确,我只需要1
,因此请删除BatchCust1=""
个字符,并仅保留""
中的值。
我可以成功获取整个字符串,但是我无法从中获取价值。我的代码目前是:
Get-ChildItem -Path "directory\*.txt" | foreach ($_)
{$value = Get-Content $_ | Select-String BatchCust1}
答案 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}