如何使用LibreOffice命令行将.doc文件转换为.txt?

3

我有一个包含.doc文件的文件夹,希望将其转换为.txt格式。如何在Windows 7中使用LibreOffice的命令行模式完成这个任务?这些文件位于C:\Temp\Test

3个回答

6

以下是我使用Windows PowerShell处理此任务的方法:

注意:在使用命令行中的LibreOffice之前,您需要关闭所有现有的Libreoffice实例。这意味着关闭所有GUI会话的LibreOffice,以及检查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

这个动作创建了一个文件sample.txt,来源于文档sample.doc,并存储在C:\Temp多个项目:
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版本。

说明:

  • 这是关于启动带参数的LibreOffice软件的文档。这将解释上面执行的soffice.exe命令。
  • Headless模式在没有GUI的情况下启动LibreOffice软件。我在问题中所提到的“命令行模式”。
  • -convert-to是此示例中的一个重要参数。在使用-convert-to时,您需要知道output_filter_name是什么(在上面的示例中为Text)。可以在此处找到那些名称的参考。输出过滤器名称将是列表中具有后缀.xcu的文件的名称。
    • 例如,如果我想将我的.doc文件转换为.pdf,我将使用参数-convert-to pdf:writer_pdf_Export(未经测试)
  • 这是我回答此问题时使用的参考。
  • 由于某种原因,.exe进程需要管道到Out-Null以避免彼此重叠。想象一下

1
我在快要抓狂的时候参考了这个答案。请记住:使用任务管理器确保旧版本的soffice.exe未在运行。这意味着关闭已存在的LibreOffice GUI版本。 - kevinaskevin

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进程? - kevinaskevin
现在回想起来已经太久远了,但是当时存在一些问题。可能甚至只是(或者也是)LibreOffice与任何试图访问它已经在GUI中打开的文件的外部进程发生冲突。(哎呀!) - markling

2
一个需要补充并且很重要的事情是,参考@kevinaskevin 's answer - 解决方法是:

通过IRC获得的开发人员信息:

LO的“用户安装”(即~/config/libreoffice)不是设计为同时被多个进程访问的;因此,当一个特定用户安装的soffice.bin已经在运行时,其他soffice.bin只需将其cmd line args转发到第一个进程,然后立即终止(即,它们不应该“失败”,即以非零退出值退出)。

如果你想要一个独立的无头LO,你可以使用自己的用户安装启动它,-env:UserInstallation=<file URL to dir>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接