2014-12-15 6 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] }