如何使用PowerShell从文本文件提取指定字符串并写入Excel表格
使用PowerShell提取本地化文本并导出到Excel的解决方案
当然可以!我来给你一套实用的PowerShell方案,帮你快速提取这些GlobalizationUtil.GetText()调用里的键值,并导出到Excel表格中。
第一步:准备依赖模块
PowerShell本身没有内置的Excel操作功能,我们需要先安装ImportExcel模块(这是社区维护的热门模块,处理Excel非常方便):
Install-Module -Name ImportExcel -Scope CurrentUser -Force
如果提示权限问题,可以右键以管理员身份运行PowerShell再执行这条命令。
第二步:编写完整的PowerShell脚本
把下面的脚本保存为ExtractLocalizationKeys.ps1,修改好你的输入文件路径和输出Excel路径即可运行:
# 1. 定义输入文件路径和输出Excel路径 $inputFilePath = "C:\Path\To\Your\InputFile.txt" # 替换成你的文本文件路径 $outputExcelPath = "C:\Path\To\Your\LocalizationKeys.xlsx" # 替换成你想要的输出Excel路径 # 2. 读取文本文件的全部内容 $fileContent = Get-Content -Path $inputFilePath -Raw # 3. 使用正则表达式匹配所有GlobalizationUtil.GetText()调用 # 正则会匹配两种格式:GlobalizationUtil.GetText(GlobalizationKey.Xxx) 和 GlobalizationUtil.GetText("Xxx") $regexPattern = '<%= GlobalizationUtil.GetText\((?:GlobalizationKey\.([^\)]+)|"([^"]+)")\) %>' $matches = [regex]::Matches($fileContent, $regexPattern) # 4. 整理匹配到的键值数据 $outputData = foreach ($match in $matches) { $keyValue = if ($match.Groups[1].Success) { # 处理GlobalizationKey.xxx格式的键 "GlobalizationKey.$($match.Groups[1].Value)" } else { # 处理带引号的字符串键 $match.Groups[2].Value } # 返回自定义对象,方便导出到Excel [PSCustomObject]@{ LocalizationKey = $keyValue } } # 5. 将数据导出到Excel $outputData | Export-Excel -Path $outputExcelPath -AutoSize -TableName "LocalizationKeys" -BoldTopRow Write-Host "提取完成!结果已保存到: $outputExcelPath"
脚本说明
- 正则表达式:专门针对你提供的两种格式做了匹配,不管是引用
GlobalizationKey枚举的键,还是直接传入字符串的键,都能准确提取。 - 数据整理:把提取到的键统一整理成结构化的对象,导出到Excel后会自动生成表头,格式更规整。
- Excel导出:
Export-Excel命令会自动创建Excel文件,-AutoSize会自动调整列宽,-BoldTopRow会把表头加粗,可读性更好。
运行脚本
打开PowerShell,导航到脚本所在目录,执行:
.\ExtractLocalizationKeys.ps1
运行完成后,你就能在指定路径下看到包含所有本地化键的Excel文件了。
内容的提问来源于stack exchange,提问作者Reynaldo Chua




