我想使用 libreoffice 在终端中运行一些命令,将一些 .docx 文件转换为 .pdf。当我可以手动放置双引号
"..."
时,代码可以在终端中运行,但是当我尝试从 Julia 以编程方式执行此操作时,它会以错误的方式进行解释。
例如,我希望终端中的命令如下所示:(这有效)
"C:\\Program Files\\LibreOffice\\program\\soffice.com" --headless --convert-to pdf --outdir "C:\\Users\\User\\Desktop\\Folder" "C:\\Users\\User\\Desktop\\input.docx"
但是,当我尝试在 Julia 中这样写时:
run(`cmd /c $executable --headless --convert-to pdf --outdir $output_folder $input_path`)
显示如下:
'C:\Program Files\LibreOffice\program\soffice.com' --headless --convert-to pdf --outdir 'C:\Users\User\Desktop\Folder' 'C:\Users\User\Desktop\input.docx'
我收到错误:
C:\Program is not recognized as an internal or external command, operable program, or batch file
我尝试过手动输入它,使用
^
转义字符,添加更多引号等。关于如何在最终命令中保留双引号有什么想法吗?或者有更好的方法来做到这一点吗?谢谢。
一个可能的原因是
executable
变量中存在前导空格。
例如,在下面,
executableA
对我来说运行良好,但是executableB
会产生错误。
executableA = "C:\\Program Files\\LibreOffice\\program\\soffice.com"
executableB = " C:\\Program Files\\LibreOffice\\program\\soffice.com"
run(`cmd /c $executableA --version`)
# LibreOffice 24.2.3.2 433d9c2ded56988e8a90e6b2e771ee4e6a5ab2ba
#
# Process(`cmd /c 'C:\Program Files\LibreOffice\program\soffice.com' --version`, ProcessExited(0))
run(`cmd /c $executableB --version`)
# 'C:\Program' is not recognized as an internal or external command, operable program or batch file.
# ERROR: failed process: Process(`cmd /c ' C:\Program Files\LibreOffice\program\soffice.com' --version`, ProcessExited(1))