1

在部署场景中,我需要重命名配置文件。每个环境(Dev.Test、Dev.Prod、Integration、Prod)都有配置文件。例如,如果 web.config 用于 Dev.Test 环境,它将被称为 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

我遇到的问题是,Regex 没有找到 Dev.Prod 环境,而是返回 Prod。这就是我引入 if 语句的原因。我想知道是否有更优雅的方式使用 Powershell 重命名文件。

4

1 回答 1

1

注意贪心匹配。修改您的正则表达式,开始".*\.(?"".*?\.(?".

于 2013-05-09T05:33:01.157 回答