#powershell #ms-word
#powershell #ms-word
Вопрос:
Я хотел бы скопировать содержимое из docx в текстовый файл. У меня следующая проблема:
после $doc = $wd.Documents.Open($path)
запуска открывается диалоговое окно, в котором говорится, что документ уже используется. Я должен вручную выбрать, чтобы открыть версию только для чтения, сохранить файл как новый файл или получить информацию, когда документ будет готов (стандартное сообщение Windows)
У меня нет открытого файла.
У меня есть решение для этого: я запускаю одну строку кода: Get-Process -Name "*word*" | Stop-Process
Мой вопрос: я уверен, что есть более элегантный способ сделать это правильно, не так ли? В моем решении запуск кода помешал бы мне использовать любой docx при запуске скрипта…
$path="C:testTest.docx"
$destination="C:TestFile1.txt"
$wd = New-Object -COM 'Word.Application'
$doc = $wd.Documents.Open($path)
$content=$doc.Content.Text
$doc.Close()
Set-Content -Path $destination -Value $content
Комментарии:
1. Более элегантным решением было бы выяснить, что использует файл. Возможно, ваш тестовый код оставляет его открытым?
2. @DougMaurer Спасибо за подсказку! Я так не думал, причина
$doc.Close()
, но потом я понял, что необходимо завершить его с помощью `wd.Quit().
Ответ №1:
Я лично был укушен тем, что Word не полностью отпустил мой документ. Дважды проверьте, что проблема вызвана не вашим тестовым кодом.
В дополнение к закрытию документа, также закройте экземпляр Word.
$wd.quit()
Кроме того, вы можете принудительно выполнить сборку мусора.
[System.GC]::Collect()