【发布时间】:2014-07-11 18:49:57
【问题描述】:
我有一个包含.doc 文件的文件夹,我想将其转换为.txt 格式。如何在 Windows 7 中使用 LibreOffice 的命令行模式来做到这一点?文件位于C:\Temp\Test。
【问题讨论】:
标签: windows powershell libreoffice doc
我有一个包含.doc 文件的文件夹,我想将其转换为.txt 格式。如何在 Windows 7 中使用 LibreOffice 的命令行模式来做到这一点?文件位于C:\Temp\Test。
【问题讨论】:
标签: windows powershell libreoffice doc
这是我使用 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 版本。
说明:
soffice.exe 命令。-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(未经测试).exe 进程需要通过管道连接到Out-Null 以避免彼此重叠。 Go figure。【讨论】:
上述解决方案很接近,但需要在 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 /)
【讨论】:
要添加到@kevinaskevin 's answer 的另一件重要的事情是 - 解决方法是:
来自开发者通过 IRC:
LO 的“用户安装”(即~/config/libreoffice)并非旨在由多个进程同时访问;因此,当一个 soffice.bin 已经为特定用户安装运行时,额外的 soffice.bin 只需将其 cmd 行参数转发给第一个并立即再次终止(即,它们不应该在退出的意义上“失败”非零退出值)
如果你想要一个独立的无头 LO,你可以通过自己的用户安装来启动它,-env:UserInstallation=<file URL to dir>
【讨论】: