Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Запуск программы и отправка в нее команд со временем (http://forum.oszone.net/showthread.php?t=274120)

probelp 16-12-2013 19:56 2273389

Запуск программы и отправка в нее команд со временем
 
Добрый день!
Помогите написать батник, который запустит программу и будет посылать в нее команду каждые 5 минут (программа так же является батником).

Iska 16-12-2013 20:12 2273398

Цитата:

Цитата probelp
и будет посылать в нее команду »

Что Вы под этим подразумеваете? Буквально.

probelp 16-12-2013 20:30 2273409

Iska, Батник открывает батник и пишет команды во 2ой батник. Например, батник, который запустит cmd и напишет в ней "chkdsk /f /r"

Iska 16-12-2013 20:39 2273414

Не могу понять Вашу глобальную цель.

probelp 16-12-2013 22:19 2273490

Iska, нет никакой глобальной цели, надеюсь кто-нибудь другой меня поймет.

Iska 16-12-2013 22:34 2273501

Не думаю. Попробуйте для начала разъяснить разницу между выбранной Вами моделью и простым пакетным файлом вида:
читать дальше »
Код:

@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 2273520

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

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

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

echo chkdsk /f /r>for_commands\4run.bat
Когда-то я так делал, да уже почти забыл.

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

Цитата probelp
батник, который запустит программу »

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

Iska 17-12-2013 01:34 2273583

Цитата:

Цитата Гуллипут
Батник вряд ли без посредства дополнительных программ сможет посылать команды другому батнику. Здесь нужна по крайней мере программа, которая для другого приложения имитирует нажатия клавиш. В батнике своих средств для этого нет. COM-сервером CMD тоже не является (насколько мне известно).
Можно использовать WSH, где есть метод SendKeys. Но это довольно геморройно. »

Послать что-либо пакетному файлу можно только на этапе ожидания ввода. Например, путём конвейера. А затем пытаться разбирать её и на основе этого разбора предпринимать какие-то действия. Но не более. Для переназначения стандартных потоков нужно запускать пакетный файл как дочерний. Так что идея отправлять команды пакетному файлу из другого пакетного файла — это из области ненаучной фантастики.

Цитата:

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

Это называется «проксирование». Подобное вполне реально и допустимо.

Цитата:

Цитата Гуллипут
Но, может быть, человек неточно выразился ? »

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

probelp 17-12-2013 16:48 2273878

Цитата:

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

У меня есть программа на java, мне нужно запустить ее и посылать в нее команду каждые 5 минут, программа работает в режиме cmd. Я не могу написать вопрос проще.

Гуллипут 17-12-2013 23:09 2274057

Цитата:

Цитата probelp
(программа так же является батником) »

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

Цитата probelp
программа работает в режиме cmd »

- а это что означает ?

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

probelp 18-12-2013 22:33 2274618

Цитата:

Цитата Гуллипут
Правильно ? »

Да, извините за то, что неправильно выразился.

Гуллипут 19-12-2013 21:58 2275222

Можно попробовать написать что-то в духе (навскидку):

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 2275256

Цитата:

Цитата Гуллипут
Гуллипут »

А как заставить ее выполнять команды каждые 5 минут?

Гуллипут 20-12-2013 00:31 2275331

Цитата:

Цитата probelp
А как заставить ее выполнять команды каждые 5 минут? »

Так надо подавать команды каждые пять минут. Например, так:
Код:

:loop
echo Komanda>com.txt

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

goto loop


probelp 20-12-2013 14:50 2275630

Гуллипут, Большое спасибо!


Время: 10:22.

Время: 10:22.
© OSzone.net 2001-