2013-08-12 3 views
1

Я использую sejda-console.bat, и я сталкиваюсь с трудностями с параметрами, когда есть пространство.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-консолью или просто передавая параметры с пробелами, которые мог бы указать мне в правильном направлении. Я искал широко и перепробовал все возможные комбинации параметров и т.д.

Благодаря

ответ

2

Я думаю, вы должны использовать кавычки для опции -o, а также:

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

Я хотел бы предложить, чтобы преобразовать длинный имена пути к каталогу коротких имен путей Например: использование C: \ TESTFO ~ 1 \, в отличие от C: \ папки теста с пробелами

Это, кажется, решить эту проблему,

Ниже рабочего примера, вызывающего sejda-консоль из AutoIt скрипт

#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) 

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 можно использовать косую черту «/» в качестве разделителя пути. Оберните весь путь в двойные кавычки, и он работает.

Я думаю, что причина, по которой «нормальная» строка пути не работает, заключается в том, что обратная косая черта «\» является escape-символом в Java.