Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java sejda-console.bat使用空格传递参数_Java_Batch File_Parameters_Spaces_Sejda_Autoit - Fatal编程技术网

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

Java sejda-console.bat使用空格传递参数,java,batch-file,parameters,spaces,sejda,autoit,Java,Batch File,Parameters,Spaces,Sejda,Autoit,我使用的是sejda console.bat,当涉及到空间时,我在参数方面遇到了困难 我正在尝试使用simplesplit功能,并按如下方式调用控制台: call sejda-console.bat simplesplit -f %1 -o %~dp1 -s all 如果指向我的文件的路径为: Z:\Test\test.pdf Z:\Test Folder\test.pdf 剧本写得很好。但是,如果我的文件路径为: Z:\Test\test.pdf Z:\Test Folder\test

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

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

call sejda-console.bat simplesplit -f %1 -o %~dp1 -s all
如果指向我的文件的路径为:

Z:\Test\test.pdf
Z:\Test Folder\test.pdf
剧本写得很好。但是,如果我的文件路径为:

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控制台,或者只是用空格传递参数,可以为我指明正确的方向。我已广泛搜索并尝试了所有可能的参数组合等


谢谢

我认为您也应该在
-o
选项中使用引号:

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

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

这似乎解决了问题,

下面是一个从AutoIt脚本调用sejda控制台的工作示例

#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)
#包括
本地$iPID,$sOutput=“”
$sFilePath=“C:\test文件夹和空格\”
$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=stdoutrade($iPID)
控制台写入($sOutput)

刚刚找到并解决了这个确切的问题,这是我要传递给sedja的一个示例

simplesplit-j overwrite-s all-f“C:/Users/user/Desktop/PDF\u spliting/pages.PDF“-o”C:/Users/user/Desktop/PDF\u spliting/spaced path/”-p[BASENAME]\uu[CURRENTPAGE]

因此,即使我的系统是Windows 10,我也可以使用正斜杠“/”作为路径分隔符。将整个路径用双引号括起来,它就可以工作了

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