如何用Powershell查找含指定字符串的docx文件并导出路径到CSV
PowerShell筛选docx并导出路径到CSV实现方案
完整修改后代码
# 初始化Word COM对象 $Word = New-Object -ComObject Word.Application $Word.Visible = $False # 定义配置参数,可根据需求修改 $searchRoot = "C:\test\test1\Desktop\Pictures" # 搜索根目录 $keyword = "test" # 要匹配的关键词 $exportCsvPath = "C:\temp\matched_docx.csv" # CSV导出路径 # 存储匹配结果的数组 $matchedFileList = @() # 递归遍历所有docx文件 Get-ChildItem -Path $searchRoot -Recurse -File -Filter "*.docx" | ForEach-Object { $currentFilePath = $_.FullName # 只读模式打开文档避免占用 $document = $Word.Documents.Open($currentFilePath, $false, $true) $docContent = $document.Content.Text # 内容匹配判断 if ($docContent -like "*$keyword*") { $matchedFileList += [PSCustomObject]@{ 完整文件路径 = $currentFilePath } } $document.Close($false) } # 导出结果到CSV $matchedFileList | Export-Csv -Path $exportCsvPath -Encoding UTF8 -NoTypeInformation # 清理Word COM对象,避免后台残留进程 $Word.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($Word) | Out-Null Remove-Variable Word
关键改动说明
- 把可修改的配置项单独抽离到代码顶部,无需修改业务逻辑即可调整参数
- 新增数组存储所有匹配到的文件路径,封装为自定义对象后导出的CSV自带表头,无需额外调整格式
- 新增
Export-Csv导出逻辑,指定UTF8编码避免中文路径/文件名乱码,-NoTypeInformation参数删除CSV文件首行多余的类型标识 - 新增COM对象释放逻辑,避免Word进程后台驻留占用系统资源、锁定文档
提示:如果不需要中文表头,把
完整文件路径改为英文字段名即可,匹配规则支持通配符调整。
内容的提问来源于stack exchange,提问作者Steve Mason
相关产品推荐
相关产品推荐

