@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
Как программно завершить работу bat скрипта?
Собствено, возможно ли это? Как делается?
команда exit
Тогда другой вопрос, как мне программно послать в бат скрипт эту команду? Мне надо что ли эмитировать нажатия клавиш для скрипта и нажатие кнопки Enter?
Цитата:
Тогда другой вопрос, как мне программно послать в бат скрипт эту команду? Мне надо что ли эмитировать нажатия клавиш для скрипта и нажатие кнопки Enter?
Завершай работу процесса терминального окна cmd.exe, вызывая WinAPI функцию ExitProcess или TerminateProcess...
в системе запущено много батников. а мне надо завершить один из них, а не все. Впрочем я не думаю что все завершатся. ведь cmd я не юзаю. бросто test.bat запускаю и все
вобще-то запускается не бат файл, а команда в нем прописаная, изавершать ее нужно
Код:
Тогда другой вопрос :) Вот этот скрипт, что в нем завершать, чтобы он перестал постоянно запускать arcemu-world.exe, в случае завершения работы arcemu-world.exe?
Цитата:
в системе запущено много батников. а мне надо завершить один из них, а не все. Впрочем я не думаю что все завершатся. ведь cmd я не юзаю. бросто test.bat запускаю и все
Это не важно, сколько у тебя запущено батников... Главное, чтобы ты знал handle именно нужного процесса cmd.exe, а для этого его нужно создать в программе, используя функцию CreateProcess... Далее, зная нужный handle, ты легко можешь завершить работу батника...
Цитата: 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
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.
Скрипт работает правильно %) В случае аварийного завершения работы экзешника, он перезапускает его. Но мне нужна возможность останавливать этот скрипт. И почему-то я сильно сомневаюсь, что если во время его исполнения, я программно открою его и отредактирую, убрав GOTO 1, он это почувтвует.
На счет завершения cmd.exe понятно. Но можно ли узнать хенлд батника другим способом? findwindow покатит? Ведь батник запускается вручную, а не из моей программы
Код:
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;
}
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ы разные...
Ага... иногда у батников text одинаковый, но если запускать их двойным кликом по файлу, то в text будет содержаться еще и название файла - "C:\windows\system32\cmd.exe - finename.bat"
Думаю что так можно найти именно тот батник, который нужен, при определенных условиях, что уже неплохо...
Если надо завершить этот bat-ник, то грохаешь файл программой, и bat-ник, не найдя файла, завершается ;)
Тоже хорошая идея :) Я ведь не знаю языка бат скриптов и того, что в них можно творить... Этот батник не мной написан. Просто раз оявилась необходимость программно завершать бат скрипты, вот и спросил как. Благодарю