пакетный файл для запуска файла jar с параметрами

Как я могу запустить пакетный файл и передать параметры в файл jar?

это не работает

mybat.bat

java -jar log_parser.jar %1 %2 %3 %4

запуск bat-файла

C:\>log_parser.bat -file=C:\\trace_small.log -str=Storing

java видит только -file


person VextoR    schedule 10.06.2011    source источник
comment
Похоже, вы делаете что-то не так. Если вы скажете нам, что вы имеете в виду под не работает, возможно, мы сможем дать вам более конкретный ответ.   -  person Peter Lawrey    schedule 10.06.2011
comment
java видит только часть аргументов   -  person VextoR    schedule 10.06.2011
comment
Вы пытались заключать в кавычки весь первый аргумент, например -file=C:\\trace_small.log? Если да, то ведет себя по-другому?   -  person jefflunt    schedule 10.06.2011
comment
@normalocity, да, в данном случае это работает! Но это не лучший способ решить проблему :)   -  person VextoR    schedule 11.06.2011
comment
@Peter Lawrey, он видит: -file   -  person VextoR    schedule 11.06.2011
comment
Двойные кавычки изменяют поведение оболочки. Если это имеет значение, приложение ничего не может с этим поделать.   -  person Peter Lawrey    schedule 11.06.2011


Ответы (4)


Я только что попробовал небольшую 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

Преимущество этого синтаксиса %* заключается в том, что он более расширяем, принимая любое количество аргументов.

Надеюсь, это поможет, но я рекомендую вам взглянуть на свой код и добавить оператор отладки, чтобы понять, где вы «теряете» часть ввода.

person gastush    schedule 14.06.2011

1) Вы можете попробовать использовать

"-Dfile=C:\trace_small.log -Dstr=Хранение"

Переменные будут установлены как свойство системы Java, но не как параметры основного метода.

2) Попробуйте поставить аргументы без '='

log_parser.bat -file C:\trace_small.log -str Хранение

person Markus Lausberg    schedule 14.06.2011

В моем случае я использую следующий bat-файл:

@echo off
PATH_TO_JRE\bin\java.exe -jar -Denable=true your_file.jar

В этом конкретном случае в java-коде я могу получить параметр «включить» следующим образом:

Boolean.getBoolean("enable") 
person Kirill Ch    schedule 21.03.2017

Например, открытие редактора карт улиц в Windows 10 x64.

> cd "C:\Program Files\Java\jre1.8.0_161\bin\"

> javaw.exe -Xmx2048m -jar "C:\Program Files (x86)\JOSM\josm-tested.jar"
person Martin    schedule 07.03.2018
comment
OP хочет запустить пакетный файл с параметрами, а не запускать банку напрямую. - person Sphinx; 07.03.2018