грамматики будут пытаться сначала найти соответствие этому правилу
blockquote>Это так. Тем не менее, вы сделали унарный минус более низким приоритетом, чем бинарный плюс.
Это означает, что выражение интерпретируется как
-((5+9)+1000)
вместо(-(5+9))+1000
.
Можно сделать это в пакетном файле следующим образом:
setlocal
FOR /F "tokens=*" %%i in ('type Settings.txt') do SET %%i
java -Dsetting1=%setting1% ...
endlocal
Это читает текстовый файл, содержащий строки как "SETTING1=VALUE1", и называет НАБОР для установки их как переменных среды.
setlocal/endlocal используются для ограничения объема переменных среды к выполнению пакетного файла.
Командный процессор CMD на самом деле довольно мощен, хотя с довольно византийским синтаксисом.
Можно также получить доступ к переменным среды ОС из программы Java:
import java.util.Map;
public class EnvMap {
public static void main (String[] args) {
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format("%s=%s%n", envName, env.get(envName));
}
}
}
Можно передать файл свойств в качестве параметра программе Java (который может запустить основную программу позже). И затем преимущество от многоплатформенной парадигмы.