sejda-console.bat用空格传递参数

时间:2013-08-12 17:20:00

标签: java batch-file parameters spaces sejda

我正在使用sejda-console.bat,当涉及到空间时,我遇到了参数方面的困难。

我正在尝试使用simplesplit功能,我按如下方式调用控制台:

call sejda-console.bat simplesplit -f %1 -o %~dp1 -s all

如果我的文件路径是:

Z:\Test\test.pdf

该脚本完美无缺。但是,如果我的文件的路径是:

Z:\Test Folder\test.pdf

失败并出现以下错误:

call sejda-console.bat simplesplit -f "Z:\Test Folder\test.pdf" -o Z:\Test Folder\ -s all
18:16:29.746 Configuring Sejda 1.0.0.M2
18:16:29.777 Loading Sejda configuration form default sejda.xml
18:16:30.027 Starting execution with arguments: 'simplesplit -f Z:\Test Folder\test.pdf -o Z:\Test Folder\ -s all'
18:16:30.027 Java version: '1.7.0_25'
18:16:30.199 Option only takes one value: --output -o value : output directory (required)

我想知道是否有人熟悉sejda-console或只是传递带有空格的参数可以指向正确的方向。我已经广泛搜索并尝试了所有可能的参数组合等。

由于

3 个答案:

答案 0 :(得分:2)

我认为您应该使用-o选项的引号:

call sejda-console.bat simplesplit -f "Z:\Test Folder\test.pdf" -o "Z:\Test Folder\" -s all

答案 1 :(得分:0)

我建议将长目录路径名转换为短路径名 例如:使用C:\ TESTFO~1 \而不是带空格的C:\ test文件夹

这似乎解决了这个问题,

下面是一个从AutoIt脚本调用sejda-console的工作示例

#include <Constants.au3>

Local $iPID, $sOutput = ""

$sFilePath = "C:\test folder with spaces\"
$sFileShort= FileGetShortName($sFilePath)
$iPID = Run(@ComSpec & " /C """ & @ScriptDir & "\sejda-console-2.10.4\bin\sejda-console.bat"" merge -l " & $sFileShort & "files.csv -o " & $sFileShort & "output.pdf --overwrite", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

ProcessWaitClose($iPID)
$sOutput = StdoutRead($iPID)
ConsoleWrite($sOutput)

答案 2 :(得分:0)

刚刚击中并解决了这个确切的问题,这是我传递给sedja的样本。

simplesplit -j overwrite -s all -f "C:/Users/user/Desktop/PDF_splitting/pages.pdf" -o "C:/Users/user/Desktop/PDF_splitting/spaced path/" -p [BASENAME]_[CURRENTPAGE]

所以,即使我的系统是Windows 10,我也可以使用正斜杠“/”作为路径分隔符。用双引号包装整个路径并且它有效。

我认为'普通'路径字符串不起作用的原因是反斜杠“\”是Java中的转义字符。