Войти

Показать полную графическую версию : [решено] Запуск программы и отправка в нее команд со временем


probelp
16-12-2013, 19:56
Добрый день!
Помогите написать батник, который запустит программу и будет посылать в нее команду каждые 5 минут (программа так же является батником).

Iska
16-12-2013, 20:12
и будет посылать в нее команду »
Что Вы под этим подразумеваете? Буквально.

probelp
16-12-2013, 20:30
Iska, Батник открывает батник и пишет команды во 2ой батник. Например, батник, который запустит cmd и напишет в ней "chkdsk /f /r"

Iska
16-12-2013, 20:39
Не могу понять Вашу глобальную цель.

probelp
16-12-2013, 22:19
Iska, нет никакой глобальной цели, надеюсь кто-нибудь другой меня поймет.

Iska
16-12-2013, 22:34
Не думаю. Попробуйте для начала разъяснить разницу между выбранной Вами моделью и простым пакетным файлом вида:
@echo off
setlocal enableextensions enabledelayedexpansion

:Repeat
start "" chkdsk.exe /f /r
>nul ping -n 301 127.0.0.1
goto :Repeat

endlocal
exit /b 0

Гуллипут
16-12-2013, 22:52
Батник вряд ли без посредства дополнительных программ сможет посылать команды другому батнику. Здесь нужна по крайней мере программа, которая для другого приложения имитирует нажатия клавиш. В батнике своих средств для этого нет. COM-сервером CMD тоже не является (насколько мне известно).

Можно использовать WSH, где есть метод SendKeys. Но это довольно геморройно.

Хотя можно, например, сделать так:
2-ой батник регулярно проверяет наличие в заданном каталоге батника с заданным именем (например, for_commands\4run.bat) и, найдя, выполняет его, после чего удаляет. А 1-ый батник создаёт для него такой батник for_commands\4run.bat с завидной регулярностью. :-) Например, командой echo:
echo chkdsk /f /r>for_commands\4run.bat

Когда-то я так делал, да уже почти забыл.

Iska, я знаю один случай, когда это может пригодиться. Я для этого и использовал когда-то этот метод: первый батник работал на одной машине в сети, а второй - на другой. Только вот это: батник, который запустит программу » под мой случай не подходит. Но, может быть, человек неточно выразился ?

Iska
17-12-2013, 01:34
Батник вряд ли без посредства дополнительных программ сможет посылать команды другому батнику. Здесь нужна по крайней мере программа, которая для другого приложения имитирует нажатия клавиш. В батнике своих средств для этого нет. COM-сервером CMD тоже не является (насколько мне известно).
Можно использовать WSH, где есть метод SendKeys. Но это довольно геморройно. »
Послать что-либо пакетному файлу можно только на этапе ожидания ввода. Например, путём конвейера. А затем пытаться разбирать её и на основе этого разбора предпринимать какие-то действия. Но не более. Для переназначения стандартных потоков нужно запускать пакетный файл как дочерний. Так что идея отправлять команды пакетному файлу из другого пакетного файла — это из области ненаучной фантастики.

Хотя можно, например, сделать так:
2-ой батник регулярно проверяет наличие в заданном каталоге »
Это называется «проксирование». Подобное вполне реально и допустимо.

Но, может быть, человек неточно выразился ? »
Автор для себя уже решил — как, и ему невдомёк, что задача может вовсе не нуждаться в том решении, которое он высказал. А может решаться проще, понятнее и логичнее. Но он молчит как палестинский партизан.

probelp
17-12-2013, 16:48
Автор для себя уже решил — как, и ему невдомёк, что задача может вовсе не нуждаться в том решении, которое он высказал. А может решаться проще, понятнее и логичнее. Но он молчит как палестинский партизан.
У меня есть программа на java, мне нужно запустить ее и посылать в нее команду каждые 5 минут, программа работает в режиме cmd. Я не могу написать вопрос проще.

Гуллипут
17-12-2013, 23:09
(программа так же является батником) » А теперь оказывается, что это программа на java. Вот чем вы нас запутали. "программа на java" является батником = логическое значение False. "Поздравляю вас, гражданин, соврамши" (Булгаков).
Но всё равно вряд ли батник сможет передавать команды java-программе без помощи других программ.
программа работает в режиме cmd » - а это что означает ?

В общем, я понял задачу так:
1. Есть программа на java. которая не подлежит изменению и работает в консольном режиме: ввод и вывод, как в cmd;
2. Требуется написать батник, который её запустит и будет подавать ей команды.
Правильно ?

probelp
18-12-2013, 22:33
Правильно ? »
Да, извините за то, что неправильно выразился.

Гуллипут
19-12-2013, 21:58
Можно попробовать написать что-то в духе (навскидку):

cmd /c bat2.bat|java-программа

*** bat2.bat ***
:begin
if exist com.txt (
type com.txt
del com.txt
)
goto begin

*** bat1.bat ***
echo chkdsk>com.txt

probelp
19-12-2013, 22:43
Гуллипут »
А как заставить ее выполнять команды каждые 5 минут?

Гуллипут
20-12-2013, 00:31
А как заставить ее выполнять команды каждые 5 минут? »
Так надо подавать команды каждые пять минут. Например, так:

:loop
echo Komanda>com.txt

rem Пауза 5 минут
ping localhost -n 300

goto loop

probelp
20-12-2013, 14:50
Гуллипут, Большое спасибо!




© OSzone.net 2001-2012