Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как программно завершить работу bat скрипта?

408
07 ноября 2008 года
Lei fang
265 / / 01.10.2005
Собствено, возможно ли это? Как делается?
8.4K
07 ноября 2008 года
admin171078
24 / / 14.07.2006
команда exit
408
07 ноября 2008 года
Lei fang
265 / / 01.10.2005
Тогда другой вопрос, как мне программно послать в бат скрипт эту команду? Мне надо что ли эмитировать нажатия клавиш для скрипта и нажатие кнопки Enter?
397
07 ноября 2008 года
SergPas
527 / / 03.02.2007
Цитата:
Тогда другой вопрос, как мне программно послать в бат скрипт эту команду? Мне надо что ли эмитировать нажатия клавиш для скрипта и нажатие кнопки Enter?

Завершай работу процесса терминального окна cmd.exe, вызывая WinAPI функцию ExitProcess или TerminateProcess...

408
08 ноября 2008 года
Lei fang
265 / / 01.10.2005
в системе запущено много батников. а мне надо завершить один из них, а не все. Впрочем я не думаю что все завершатся. ведь cmd я не юзаю. бросто test.bat запускаю и все
274
08 ноября 2008 года
Lone Wolf
1.3K / / 26.11.2006
вобще-то запускается не бат файл, а команда в нем прописаная, изавершать ее нужно
408
08 ноября 2008 года
Lei fang
265 / / 01.10.2005
Код:
@ECHO OFF
CLS
rem COLOR 9

ECHO ARCemu restart script. If you want to stop ARCemu, stop this script first

rem set /a i=0

:1
START /WAIT arcemu-world.exe


rem copy world.log world.log.%date%.%i%
rem start winrar a world.log.%date%.%i%.rar world.log.%date%.%i%
rem set /a i+=1



echo ARCemu was crashed at %date% %time%
echo ARCemu was crashed at %date% %time% >> logs\arcemu_crashes.log

GOTO 1

Тогда другой вопрос :) Вот этот скрипт, что в нем завершать, чтобы он перестал постоянно запускать arcemu-world.exe, в случае завершения работы arcemu-world.exe?
397
08 ноября 2008 года
SergPas
527 / / 03.02.2007
Цитата:
в системе запущено много батников. а мне надо завершить один из них, а не все. Впрочем я не думаю что все завершатся. ведь cmd я не юзаю. бросто test.bat запускаю и все


Это не важно, сколько у тебя запущено батников... Главное, чтобы ты знал handle именно нужного процесса cmd.exe, а для этого его нужно создать в программе, используя функцию CreateProcess... Далее, зная нужный handle, ты легко можешь завершить работу батника...

288
08 ноября 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: Lei fang
Код:
@ECHO OFF
CLS
rem COLOR 9

ECHO ARCemu restart script. If you want to stop ARCemu, stop this script first

rem set /a i=0

:1
START /WAIT arcemu-world.exe


rem copy world.log world.log.%date%.%i%
rem start winrar a world.log.%date%.%i%.rar world.log.%date%.%i%
rem set /a i+=1



echo ARCemu was crashed at %date% %time%
echo ARCemu was crashed at %date% %time% >> logs\arcemu_crashes.log

GOTO 1

Тогда другой вопрос :) Вот этот скрипт, что в нем завершать, чтобы он перестал постоянно запускать arcemu-world.exe, в случае завершения работы arcemu-world.exe?



Ну насколько я понимаю убрать GOTO 1.

408
08 ноября 2008 года
Lei fang
265 / / 01.10.2005
Либо я чего-то не понимаю, либо вы.
Скрипт работает правильно %) В случае аварийного завершения работы экзешника, он перезапускает его. Но мне нужна возможность останавливать этот скрипт. И почему-то я сильно сомневаюсь, что если во время его исполнения, я программно открою его и отредактирую, убрав GOTO 1, он это почувтвует.

На счет завершения cmd.exe понятно. Но можно ли узнать хенлд батника другим способом? findwindow покатит? Ведь батник запускается вручную, а не из моей программы
1.9K
08 ноября 2008 года
George22
91 / / 09.12.2007
Убрать все запущенные батники получилось таким кодом:
Код:
HWND hW =NULL;
while(1)
 {
hW =FindWindow("ConsoleWindowClass","C:\\windows\\system32\\cmd.exe");
if(hW)
  {
 PostMessage(hW,WM_CLOSE,0,0);
 hW =NULL;
  }
else break;
 }


Но как найти один нужный, я не знаю, т.к. у них у всех класс:
ConsoleWindowClass
и техт:
C:\\windows\\system32\\cmd.exe , только Handlы разные...
408
08 ноября 2008 года
Lei fang
265 / / 01.10.2005
Видимо то что надо :) Премного благодарен.
Ага... иногда у батников text одинаковый, но если запускать их двойным кликом по файлу, то в text будет содержаться еще и название файла - "C:\windows\system32\cmd.exe - finename.bat"
Думаю что так можно найти именно тот батник, который нужен, при определенных условиях, что уже неплохо...
490
08 ноября 2008 года
frid-karatel
357 / / 15.09.2007
Можно создавать файлы-идентификаторы, типа _file_00001. К этому файлу привязан bat-ник. В этом bat-нике ставишь цикл и проверяешь IF EXISTS.

Если надо завершить этот bat-ник, то грохаешь файл программой, и bat-ник, не найдя файла, завершается ;)
408
08 ноября 2008 года
Lei fang
265 / / 01.10.2005
Тоже хорошая идея :) Я ведь не знаю языка бат скриптов и того, что в них можно творить... Этот батник не мной написан. Просто раз оявилась необходимость программно завершать бат скрипты, вот и спросил как. Благодарю
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог