2015-11-04 1 views
0

Первый вопрос, будь добр, я начал читать о пакетных файлах 12 часов назад.Может ли командный файл передать команду файлу jar?

Я пытаюсь написать командный файл, который будет передавать команду в java-файл jar каждые 30 минут.

Я уверен, что это должно быть возможно, но мой небольшой опыт работы с файлами bat просто не разрезает его.

Вот что я написал до сих пор

@echo off 
title Test Program 

set /a count=0 
start /B java -Xms2G -Xmx2G -jar minecraft_server.1.8.8.jar nogui 
timeout /t 15 >nul 
goto loop 


:loop 
set /a mark=30*count 
set /a count=count+1 
echo say Episode %count% Minute Mark %mark% 
timeout /t 5 >nul 

goto loop 

Для сравнения, пакетный файл ниже будет запускать и запустить файл банку, и если я вводить команды в командной строке, файл банка реагирует на них ,

title run-minecraft 
java -Xms2G -Xmx2G -jar minecraft_server.1.8.8.jar 
pause 

Например, если я типа «сказать привет» во второй программы, пока она выполняется, файл банка выполняет команду «говорить», и появляется «привет» в игре. Первая программа выводит «say Episode ...» каждые пять секунд (я не хочу ждать полчаса во время тестирования) в командной строке, но команда say не выполняется, а желаемое сообщение «Episode # Minute Mark # # "не отображается в игре.

Я думаю, что проблема в том, что я не говорю командной строке для выполнения кода, который командный файл пишет в него, но я не уверен, как это сделать автоматически.

Извините, если это сбивает с толку, потому что я не использую правильные термины, но я не программист и не знаю лучше.

+0

На стороне комментария, сделайте себе одолжение и научитесь использовать powershell вместо партии. Он намного более современен и поддерживается с Vista. – Aaron

+0

Это не проблема пакетного файла. Программа Java должна иметь возможность принимать аргументы командной строки. – Squashman

+0

@Squashman Я считаю, что он говорит о stdin, а не о аргументах командной строки – Aaron

ответ

0

В вашем коротком командном файле решение работает, потому что команда Java открывается в другой командной строке, в которой ввод-вывод подключен к Java-приложению.
В вашей новой партии, используя start/b, вы открываете приложение Java без командной строки и, следовательно, без ввода-вывода.
Я недостаточно разбираюсь в партии, чтобы ответить на ваш вопрос, но вам нужно найти, как перенаправлять команды ввода/вывода, которые имеют контроль над входом (и, возможно, вывод, но здесь это не имеет значения) Java.

Похоже, this - хорошее начало.

+0

ваша ссылка не работает, пожалуйста, обновите ... – aschipfl

+0

@aschipfl должен быть на вашей стороне, я проверил его, и он работает для меня. Еще один ресурс для тех, у кого возникли проблемы: https://jpsoft.com/help/redirection.htm – Aaron

+0

Я столкнулся с проблемой на двух сайтах ... в любом случае, спасибо за альтернативную ссылку ... – aschipfl

Смежные вопросы