[英]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.