0
PowerShell 스크립트를 사용하여 출력 파일 이름의 일부로 사용하는 어셈블리 버전을 얻기 위해 파일을 읽습니다. 그러나, 내가 읽고있는 파일에는 주석 ("//")이 포함되어 있습니다.이 주석은 무시하고 싶습니다.PowerShell에서 주석 처리 된 줄에 내가 포함시키려는 패턴을 포함하더라도 어떻게 제외시킬 수 있습니까?
여기 내 입력 파일의 두 줄이 있습니다.
이param (
[string]$path
,[string]$file = "AssemblyInfo.cs"
,[string]$projectName)
# Search for the AssemblyVersion to be appended to the filename
$pattern = '\[assembly: AssemblyVersion\("(.*)"\)\]'
(Get-Content $path\$file) | ForEach-Object{
if($_ -match $pattern){
$fileVersion = [version]$matches[1]
}
}
Write-Host $projectName-$fileVersion
현재의 패턴이 입력 모두 라인에 일치합니다
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
가 여기 내 현재 스크립트입니다 : 첫 번째, 두 번째는 원하는 값으로 라인, 무시하는 주석 행입니다 . 나는 $ 패턴 값 또는 무시하기 위해 "($ _ -match의 $ 패턴)이"주석 처리 된 줄을 수정하는 방법
Cannot convert value "1.0.*" to type "System.Version".
Error: "Input string was not in a correct format."
At C:\Scripts\Powershell\Get-FileName.ps1:10 char:36
+ $fileVersion = [version]$matches[ <<<< 1]
+ CategoryInfo : NotSpecified: (:) [], RuntimeException
+ FullyQualifiedErrorId : RuntimeException
: 댓글이 유효한 버전을 가지고 있지 않기 때문에 오류가 발생합니다 ?
나는 시작에 공백이나 탭이있을 수 있습니다 일치하고 문자열로
테스트합니다. – RobP
그런 다음 \ s *를 정규식의 시작으로 추가하십시오. '^ \ s * \ [assembly : AssemblyVersion \ ("(. *)"\) \]' – swestner