2013-05-09 4 views
1

배포시에는 구성 파일의 이름을 바꿔야합니다. 모든 환경 (Dev.Test, Dev.Prod, Integration, Prod)에 대한 설정 파일이 있습니다. 예를 들어 web.config는 Dev.Test 환경을위한 경우 web.Dev.Test.config라고합니다. 대상 컴퓨터에서 Powershell을 사용하여 원래 이름 (예 : web.Dev.Test.config에서 web.config)으로 파일의 이름을 다시 변경해야합니다.Powershell을 사용하여 파일 이름에서 부분 문자열 제거

$test = "web.Dev.Prod.config" 
$environment = $test | Select-String -Pattern ".*\.(?<environment>(Dev.Test|Dev.Prod|Prod|Integration))\.config" | select -expand Matches | foreach {$_.groups["environment"].value} 
if ($test -match "Dev.Prod") 
{ 
    $environment = "Dev.Prod" 
} 
$environment 
$newFileName = $test.Remove($test.IndexOf($environment),$environment.Length + 1) 
$newFileName 

이 문제는 Regex가 Dev.Prod 환경을 찾지 못했지만 대신 Prod를 반환한다는 것입니다. 이것이 if 문을 도입 한 이유입니다. PowerShell로 파일의 이름을 바꾸는 좀 더 우아한 방법이 있는지 궁금합니다.

답변

1

탐욕스러운 일치를 조심하십시오. 정규 표현식을 수정하여 ".*\.(?"에서 ".*?\.(?"으로 수정하십시오.

관련 문제