我有一個Powershell字符串的小問題。我正在使用一個叫做SymmetricDS的Java程序,該程序接受某個Windows批處理文件的參數用於某些管理功能。其中之一是,以打開註冊爲一個節點,使含有該節點的組和id的字符串:命令行參數到exe
& .\bin\sym.bat -p symmetric.properties --open-registration 'store,01'
在批處理文件,JAVA被調用時,與屬性我通過上述傳遞在像這樣:
java -Dthis -Dthat -Dfoo -Dbar %1 %2 %3 %4 %5 %6 %7 %8 %9
在Java中的函數這部分後本身出現故障:
int index = argument.trim().indexOf(",");
if (index < 0) {
throw new SymmetricException("LauncherMissingFilenameTriggerSQL", OPTION_OPEN_REGISTRATION);
}
index
顯然是-1。爲什麼它沒有找到逗號字符,我不知道。我只知道,當我運行在一個.cmd或.bat文件一樣,它工作得很好:
.\bin\sym.bat -p symmetric.properties --open-registration "store,01"
我懷疑它是與PowerShell的字符串是unicode的,不正當的事情發生在他們的旅程從那裏進入一個批處理文件,然後到java。
有人知道我可以直接在Powershell中調用它嗎?
解決:zdan's answer作品,不欺騙PowerShell的有點像這樣:
.\bin\sym.bat -p symmetric.properties --open-registration '"store,01"'
有趣。即使沒有調用操作符(就像你的第一個例子),'store,01'仍然被擴展爲2個元素,而不是剩下1個。我確實設法用'''store,01「''來欺騙它,以便它只剝去外撇號。猜猜我需要更多地瞭解解析器以避免其他怪異,因爲編寫腳本來幫助我控制其他應用程序是我對PowerShell的主要使用。 – 2010-12-14 15:30:26
@Joel你是對的,只是刪除呼叫操作員沒有幫助,我刪除了。 – zdan 2010-12-14 18:03:17