我有一个包含.doc
文件的文件夹,希望将其转换为.txt
格式。如何在Windows 7中使用LibreOffice的命令行模式完成这个任务?这些文件位于C:\Temp\Test
。
我有一个包含.doc
文件的文件夹,希望将其转换为.txt
格式。如何在Windows 7中使用LibreOffice的命令行模式完成这个任务?这些文件位于C:\Temp\Test
。
以下是我使用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版本。
说明:
soffice.exe
命令。-convert-to
是此示例中的一个重要参数。在使用-convert-to
时,您需要知道output_filter_name是什么(在上面的示例中为Text)。可以在此处找到那些名称的参考。输出过滤器名称将是列表中具有后缀.xcu
的文件的名称。
.doc
文件转换为.pdf
,我将使用参数-convert-to pdf:writer_pdf_Export
(未经测试).exe
进程需要管道到Out-Null
以避免彼此重叠。想象一下。上面的解决方案已经接近了,但在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/
通过IRC获得的开发人员信息:
LO的“用户安装”(即~/config/libreoffice
)不是设计为同时被多个进程访问的;因此,当一个特定用户安装的soffice.bin已经在运行时,其他soffice.bin只需将其cmd line args转发到第一个进程,然后立即终止(即,它们不应该“失败”,即以非零退出值退出)。
如果你想要一个独立的无头LO,你可以使用自己的用户安装启动它,-env:UserInstallation=<file URL to dir>