簡體   English   中英

sejda-console.bat用空格傳遞參數

[英]sejda-console.bat passing parameters with spaces

我正在使用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或只是傳遞帶有空格的參數,這些空格可能會指向正確的方向。 我進行了廣泛搜索,並嘗試了所有可能的參數組合等。

謝謝

我認為您也應該對-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-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)

剛剛解決了這個確切的問題,這就是我傳遞給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中的轉義字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM