1

展開シナリオでは、構成ファイルの名前を変更する必要があります。すべての環境 (Dev.Test、Dev.Prod、Integration、Prod) の構成ファイルがあります。たとえば、Dev.Test 環境用の場合、web.config は web.Dev.Test.config と呼ばれます。ターゲット マシンで、Powershell を使用してファイルの名前を元の名前に戻す必要があります (つまり、web.Dev.Test.config から web.config に)。

$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

これに関する問題は、正規表現が Dev.Prod 環境を見つけられず、代わりに Prod を返すことです。これが、if ステートメントを導入した理由です。Powershell でファイルの名前を変更するよりエレガントな方法があるかどうか疑問に思っていました。

4

1 に答える 1

1

貪欲なマッチングに注意してください。で始まる正規表現を変更".*\.(?"します".*?\.(?"

于 2013-05-09T05:33:01.157 に答える