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

如何使用PowerShell实现指定目录.EML文件发件人自动检查与修改

PowerShell 批量替换EML文件发件人域名脚本实现

前置准备

  • 提前备份所有待处理的.eml文件,避免编辑失误导致数据丢失
  • 如需调整PowerShell执行权限,可运行管理员权限PowerShell执行:Set-ExecutionPolicy RemoteSigned,选择Y确认即可

完整脚本

# 配置参数,按需修改以下三个变量即可
$scanPath = "C:\你的\扫描\目录\路径"  # 要扫描的EML文件所在目录
$oldDomain = "要替换的原域名.com"     # 示例:oldcompany.com
$newDomain = "替换后的目标域名.com"   # 示例:newcompany.com

# 递归扫描目录下所有.eml文件,不需要递归删除 -Recurse 参数即可
$emlFiles = Get-ChildItem -Path $scanPath -Filter *.eml -Recurse -File

foreach ($file in $emlFiles) {
    # 读取文件内容,使用UTF-8编码,如需其他编码可修改Encoding参数
    $content = Get-Content -Path $file.FullName -Raw -Encoding UTF8
    
    # 匹配发件人字段的域名并替换,忽略域名大小写
    $modifiedContent = $content -replace "(?<=^From:.*<.*@)$([regex]::Escape($oldDomain))(?=>.*$)", $newDomain, 'IgnoreCase'
    
    # 将修改后的内容写回原文件
    Set-Content -Path $file.FullName -Value $modifiedContent -Encoding UTF8
}

Write-Host "所有文件处理完成,共处理$($emlFiles.Count)个EML文件"

关键逻辑说明

  • 脚本仅修改邮件头的From:字段内容,不会误修改邮件正文、收件人、抄送等其他字段的同域名内容
  • 正则匹配采用后向断言和前向断言锁定域名位置,避免误替换
  • 编码默认使用UTF8,若你的EML文件是GBK等其他编码,可将Encoding参数的值改为Default或者对应编码名称

测试提示:首次运行前建议先复制少量测试文件到单独目录运行脚本,确认替换效果符合预期后再批量处理正式文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:54:05