You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Powershell实现.properties文件配置行批量注释与指定取消注释

PowerShell 实现properties配置文件指定项取消注释脚本

完整可运行脚本

# 配置项定义
$path = "test.properties" # 替换为你的配置文件实际路径
$hostNameToUncomment = "hostName1" # 替换为你需要取消注释的hostName值
$portNumToUncomment = "portNum1" # 替换为你需要取消注释的portNum值,不需要的话可以对应删减逻辑

# 逐行处理文件内容
$modifiedContent = Get-Content -Path $path | ForEach-Object {
    $currentLine = $_
    # 处理所有hostName相关行
    if ($currentLine -match '^#?\s*hostName\s*=\s*(.+?)\s*$') {
        $configValue = $matches[1].Trim()
        # 先统一注释当前匹配行
        $currentLine = $currentLine -replace '^#?\s*', '# '
        # 值匹配则取消注释
        if ($configValue -eq $hostNameToUncomment) {
            $currentLine = $currentLine -replace '^#\s*', ''
        }
        return $currentLine
    }
    # 处理所有portNum相关行
    elseif ($currentLine -match '^#?\s*portNum\s*=\s*(.+?)\s*$') {
        $configValue = $matches[1].Trim()
        $currentLine = $currentLine -replace '^#?\s*', '# '
        if ($configValue -eq $portNumToUncomment) {
            $currentLine = $currentLine -replace '^#\s*', ''
        }
        return $currentLine
    }
    # 非目标配置行直接返回不修改
    else {
        return $currentLine
    }
}

# 保存修改后的内容回原文件,指定UTF8编码避免乱码
$modifiedContent | Set-Content -Path $path -Encoding UTF8

逻辑说明

  • 正则匹配兼容行开头带#、不带#、前后有空格的所有hostName/portNum配置行,同时自动提取等号后的配置值
  • 所有匹配到的hostName/portNum行先统一注释,确保默认所有相关配置都是关闭状态
  • 仅当配置值和你指定的变量值相等时,才会去掉行开头的#,实现仅保留目标配置项生效
  • 其他无关配置行、注释行不会做任何修改

如果不需要处理portNum配置,直接删除对应的elseif分支逻辑即可。

内容的提问来源于stack exchange,提问作者Benny B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:45:02