【问题标题】:How do I convert .doc files to .txt using LibreOffice from the command line?如何从命令行使用 LibreOffice 将 .doc 文件转换为 .txt?
【发布时间】:2014-07-11 18:49:57
【问题描述】:

我有一个包含.doc 文件的文件夹,我想将其转换为.txt 格式。如何在 Windows 7 中使用 LibreOffice 的命令行模式来做到这一点?文件位于C:\Temp\Test

【问题讨论】:

    标签: windows powershell libreoffice doc


    【解决方案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 hereoutput_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>

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 2019-03-04
      • 2018-06-15
      • 1970-01-01
      • 2015-06-01
      • 2017-09-16
      • 1970-01-01
      • 2010-12-06
      • 2014-11-10
      相关资源
      最近更新 更多