在命令行指令中转义双引号 Julia

问题描述 投票:0回答:1

我想使用 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

我尝试过手动输入它,使用

^
转义字符,添加更多引号等。关于如何在最终命令中保留双引号有什么想法吗?或者有更好的方法来做到这一点吗?谢谢。

pdf ms-word julia libreoffice
1个回答
0
投票

一个可能的原因是

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))
© www.soinside.com 2019 - 2024. All rights reserved.