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