Я только что попробовал с небольшой программой Java, которая только выводит аргументы на экран:
public static void main(String[] args)
{
for(String s : args)
{
System.out.println(s);
}
}
и следующий пакетный файл:
java -jar test.jar %1 %2 %3 %4
и я получил следующий результат
-file
C:\\trace_small.log
-str
Storing
Для той же командной строки, что и у вас ... знак равенства '=' исчез.
Теперь, если вы укажете командный файл на это:
java -jar test.jar %*
вы получите еще один результат (который может быть тем, что вы ожидали - не ясно)
-file=C:\\trace_small.log
-str=Storing
Преимущество этого синтаксиса% * в том, что он более расширяем, принимая любое количество аргументов.
Надеюсь, это поможет, но я рекомендую вам взглянуть на ваш код и добавить несколько операторов отладки, чтобы понять, где вы «теряете» некоторую часть ввода.