У меня небольшая проблема со строками Powershell. Я использую Java-программу под названием SymmetricDS , которая принимает аргументы в командный файл Windows для определенных административных функций. Одним из них является открытие регистрации для узла, передавая строку, содержащую группу узла и идентификатор:
& .\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?
Решено : Ответ Здана работает, также как обман с Powershell выглядит примерно так:
.\bin\sym.bat -p symmetric.properties --open-registration '"store,01"'