我有一个.doc
文件夹,我想将其转换为.txt
格式。如何在Windows 7中使用LibreOffice的命令行模式?这些文件位于C:\Temp\Test
。
答案 0 :(得分:4)
以下是使用Windows PowerShell处理此任务的方法
注意:在从命令行使用LibreOffice之前,您需要关闭所有现有的Libreoffice 实例。这意味着关闭LibreOffice的所有GUI会话,以及检查soffice.exe
或运行后台的LibreOffice
进程的TaskManager。
一件物品:
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
C:\Temp
中创建一个文件sample.doc
多件商品:
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
}
这为文件夹.txt
C:\Temp\test
文件
再次:使用任务管理器确保以前版本的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。答案 1 :(得分:1)
添加到@kevinaskevin 's answer的另一个重要事项是 - 解决方法是:
来自开发者的IRC:
LO的“用户安装”(即~/config/libreoffice
)并非旨在由多个进程同时访问;因此,当一个soffice.bin已经为特定用户安装运行时,额外的soffice.bin只是将他们的cmd行args转发到第一个并再次立即终止(即,他们不应该在退出的情况下“失败”非零退出值)
如果您想要一个独立的无头LO,您可以使用自己的用户安装启动它,-env:UserInstallation=<file URL to dir>