如何从命令行使用 LibreOffice 将 .doc 文件转换为 .txt?
Posted
技术标签:
【中文标题】如何从命令行使用 LibreOffice 将 .doc 文件转换为 .txt?【英文标题】:How do I convert .doc files to .txt using LibreOffice from the command line? 【发布时间】:2014-07-11 18:49:57 【问题描述】:我有一个包含.doc
文件的文件夹,我想将其转换为.txt
格式。如何在 Windows 7 中使用 LibreOffice 的命令行模式来做到这一点?文件位于C:\Temp\Test
。
【问题讨论】:
【参考方案1】:这是我使用 Windows PowerShell 处理此任务的方式
注意:在从命令行使用 LibreOffice 之前您需要关闭所有现有的 Libreoffice 实例。这意味着关闭 LibreOffice 的所有 GUI 会话并检查 TaskManager 是否有 soffice.exe
或运行后台的 LibreOffice
进程。
一件物品:
PS &("C:\Program Files (x86)\LibreOffice 4\program\soffice.exe") -headless -convert-to txt:Text -outdir C:\Temp C:\Temp\test\sample.doc
这在C:\Temp
中从文档sample.doc
创建了一个文件sample.txt
多个项目:
foreach ($file in Get-ChildItem C:\Temp\test)
&("C:\Program Files (x86)\LibreOffice 4\program\soffice.exe") -headless -convert-to txt:Text -outdir C:\Temp C:\Temp\test\$file | Out-Null
这为文件夹C:\Temp\test
中的每个文件创建了一个.txt
文件
再次声明:使用任务管理器确保之前版本的 soffice.exe
没有运行。这意味着关闭 LibreOffice 的现有 GUI 版本。
说明:
这里是关于Starting LibreOffice Software With Parameters 的文档。这将解释上面执行的soffice.exe
命令。
Headless 模式在没有 GUI 的情况下启动 LibreOffice 软件。我在问题中所说的“命令行模式”。
-convert-to
是本例中的一个重要参数。使用-convert-to
时,您需要知道output_filter_name 是什么(上面示例中的Text)。 A reference for those names can be found here。 output_filter_name 将是该列表中具有后缀 .xcu
的文件的名称
例如,如果我想将我的.doc
文件转换为.pdf
,我会使用参数-convert-to pdf:writer_pdf_Export
(未经测试)
Here is a reference I used when answering this question.
出于某种原因,.exe
进程需要通过管道连接到Out-Null
以避免彼此重叠。 Go figure。
【讨论】:
在差点把头发拔掉之后,我只是查看了这个答案以供自己参考。 记住:使用任务管理器确保没有运行以前版本的 soffice.exe。这意味着关闭 LibreOffice 的现有 GUI 版本。【参考方案2】:上述解决方案很接近,但需要在 LibreOffice 4.2 / Linux 上进行一些更改:
soffice --headless --convert-to txt:Text /path_to/file_to_convert.odt
(我用 odt 做的,我遵循的示例使用了 doc:http://ask.libreoffice.org/en/question/14130/how-do-i-install-filters-for-the-soffice-command /)
【讨论】:
在 Linux 中,在无头(命令行)模式下运行之前,是否必须关闭所有现有的 LibreOffice 进程? 现在太早了,无法准确记住,但现有流程存在某种问题。 LibreOffice 甚至可能只是(或同时)与任何试图访问它已经在 GUI 中打开的文件的外部进程发生冲突。 (哦!)【参考方案3】:要添加到@kevinaskevin 's answer 的另一件重要的事情是 - 解决方法是:
来自开发者通过 IRC:
LO 的“用户安装”(即~/config/libreoffice
)并非旨在由多个进程同时访问;因此,当一个 soffice.bin 已经为特定用户安装运行时,额外的 soffice.bin 只需将其 cmd 行参数转发给第一个并立即再次终止(即,它们不应该在退出的意义上“失败”非零退出值)
如果你想要一个独立的无头 LO,你可以通过自己的用户安装来启动它,-env:UserInstallation=<file URL to dir>
【讨论】:
以上是关于如何从命令行使用 LibreOffice 将 .doc 文件转换为 .txt?的主要内容,如果未能解决你的问题,请参考以下文章
如何从命令行对 OpenOffice/LibreOffice 电子表格运行 sql 查询?
使用命令行使用 Libre Office 将 xls 转换为 dbf
Libreoffice:如何使用高棉 Unicode 在命令行中将 .xlsx 转换为 .pdf 格式?