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

请求协助:使用PowerShell批量重命名文件及文件内容

PowerShell脚本完善方案

需求说明

  • 根目录包含各类文件(如xml、txt)及子文件夹,子文件夹内也有文件
  • 替换所有子文件夹中所有文件内容里指定文本的所有出现,支持匹配大小写混合形式(如“ABC”“Abc”)
  • 批量重命名所有子文件夹中的文件名,同样支持匹配大小写混合的指定文本,需整合到脚本中

用户现有脚本(仅支持单独子文件夹,未满足全部需求)

$filePath = "C:\root_folder"
Get-ChildItem $filePath -Recurse | ForEach {
     (Get-Content $_ | ForEach  { $_ -creplace 'abc_123', 'def_123' }) |
     Set-Content $_
}

完善后的脚本

# 配置参数
$rootPath = "C:\root_folder"
$oldText = "abc_123"  # 要替换的文本(大小写混合匹配)
$newText = "def_123"  # 替换后的文本
$oldFileNameText = "uvw"  # 文件名中要替换的文本
$newFileNameText = "xyz"  # 文件名替换后的文本

# 先处理文件名重命名(避免后续文件路径变化导致问题)
Get-ChildItem -Path $rootPath -Recurse -File | ForEach-Object {
    # 使用不区分大小写的替换(-replace 默认不区分大小写)
    $newName = $_.Name -replace [regex]::Escape($oldFileNameText), $newFileNameText
    if ($newName -ne $_.Name) {
        try {
            Rename-Item -Path $_.FullName -NewName $newName -Force -ErrorAction Stop
            Write-Host "已重命名文件: $($_.FullName) -> $newName"
        }
        catch {
            Write-Warning "重命名文件失败: $($_.FullName),错误信息: $_"
        }
    }
}

# 处理文件内容替换
Get-ChildItem -Path $rootPath -Recurse -File | ForEach-Object {
    try {
        # 读取文件内容,使用不区分大小写的替换(-creplace是区分大小写,改用-replace)
        $content = Get-Content -Path $_.FullName -Raw -ErrorAction Stop
        $updatedContent = $content -replace [regex]::Escape($oldText), $newText
        
        # 仅当内容有变化时才写入,避免不必要的文件修改
        if ($updatedContent -ne $content) {
            Set-Content -Path $_.FullName -Value $updatedContent -Force -ErrorAction Stop
            Write-Host "已替换文件内容: $($_.FullName)"
        }
    }
    catch {
        Write-Warning "处理文件失败: $($_.FullName),错误信息: $_"
    }
}

关键改进说明

  • 大小写不敏感匹配: 使用-replace(默认不区分大小写)替代原脚本的-creplace(区分大小写),满足大小写混合文本的匹配需求;同时用[regex]::Escape()处理特殊字符,避免正则表达式冲突
  • 分步骤处理: 先重命名文件名,再处理内容替换,防止路径变化导致的找不到文件问题
  • 错误处理: 添加try/catch块捕获访问拒绝等异常,并给出明确提示,避免脚本中断
  • 性能优化: 使用Get-Content -Raw一次性读取文件内容,比逐行处理更高效;仅在内容或文件名有变化时执行写入/重命名操作
  • 权限控制: 添加-Force参数,提升对部分受限制文件的处理能力(仍需确保运行脚本的账号有足够权限)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:13:24