问题描述
运行$doc = $wd.Documents.Open($path)
后,将打开一个对话框,指出该文档已被使用。我必须手动选择以打开只读版本,将文件另存为新文件,或者在文档准备就绪时收到通知(标准Windows消息)
我没有打开文件。
我确实有解决方案:我运行一行代码:Get-Process -Name "*word*" | Stop-Process
我的问题:我敢肯定,有一种更优雅的方法可以正确地做到这一点,对吗?在我的解决方案中,运行代码会阻止我在运行脚本时使用任何docx ...
$path="C:\test\Test.docx"
$destination="C:\Test\File1.txt"
$wd = New-Object -COM 'Word.Application'
$doc = $wd.Documents.Open($path)
$content=$doc.Content.Text
$doc.Close()
Set-Content -Path $destination -Value $content
解决方法
我个人一直被言语所咬,没有完全放开我的文件。仔细检查不是引起问题的测试代码。
除了关闭文档之外,还关闭单词实例。
$wd.quit()
此外,您可以强制垃圾收集。
[System.GC]::Collect()