Battle Forum

Battle Forum (http://battlefox.rooty.ru/index.php)
-   Разработка приложений (http://battlefox.rooty.ru/forumdisplay.php?f=120)
-   -   Создание bat-файла (http://battlefox.rooty.ru/showthread.php?t=9389)

SoaT 22.09.2008 12:42

Создание bat-файла
 
Помогите, кто разбирается, создать bat-файл для запуска WarCraft'а.
Алгоритм такой:
  1. Монтирование вирт.диска
    "C:\Program Files\Alcohol Soft\Alcohol 120\AxCmd.exe" E: /M:"C:\Games\Warcraft\Virtual\WarCraft III.mds"
  2. Запуск WarRan'а
    C:\Games\Warcraft\WarRun\WarRun.exe
  3. Запуск wl3.exe
    C:\Games\Warcraft\w3l.exe
    w3l запускает war3.exe, только как-то странно. Как не выяснял.
  4. Ожидание окончания war3.exe
  5. Закрытие WarRun'а
    taskkill /IM "WarRun.exe"
Если бы знать как выполнить 4-ый пункт... :unsure:
Так же было бы интересно, можно ли вытаскивать данные из реестра и потом использовать их?

Fafnir 22.09.2008 13:33

обязательно bat? Не осилит, боюсь.
Погляди VBasic и Windows Scripting Host.

SoaT 23.09.2008 00:09

Да из меня кодер не кудышный ;) Таже в таких простых случаях. Думал мб есть какая-нибуть команда.

Slava 23.09.2008 00:24

? SoaT ?, можно для таких целей заюзать Daemon Script
еще и размонтировать образ в конце можна :)

И это вроде уже обсуждалось ;)
http://forum.battlefox.ru/showthread...026#post249026

bmp 23.09.2008 10:08

Ξ SoaT Ξ, 4-5 пункты можно попробывать выполнить, например, так:
Код:

@rem Выключаем вывод сообщений на экран
@echo off

:loop
rem Считаем кол-во запущеных процессов с именем war3.exe, если их кол-во =0, то идем на :end
for /f "usebackq" %%a in (`tasklist /fi "Imagename eq war3.exe" 2^>nul ^| find /c "war3.exe"`) do if "%%a" equ "0" goto end
rem Делаем паузу в 1 сек.
ping -n 2 127.0.0.1 >nul
rem Идем на :loop
goto loop

:end
taskkill /IM "WarRun.exe"


SoaT 23.09.2008 23:04

Slava, проблема не в монтирование диска и запуска игры. Проблема в том, чтобы после закрытии игры, выключать еще одну программу.

bmp, спасибо, буду разбираться

Добавлено через 4 часа 11 минут
Вот что у меня в итоге получилось :)
Код:

echo off

echo Entering Virtual CD
"C:\Program Files\Alcohol Soft\Alcohol 120\AxCmd.exe" E: /M:"C:\Games\Warcraft\Virtual\WarCraft III.mds"

echo Starting WarRan
start C:\Games\Warcraft\WarRun\WarRun.exe

echo 4 sec pause
ping -n 4 127.0.0.1

echo Starting W3l.exe
start C:\Games\Warcraft\w3l.exe

echo 10 sec pause
ping -n 10 127.0.0.1

echo Waiting when the war3.exe will be close...
:loop
rem Считаем кол-во запущеных процессов с именем war3.exe, если их кол-во =0, то идем на :end
for /f "usebackq" %%a in (`tasklist /fi "Imagename eq war3.exe" 2^>nul ^| find /c "war3.exe"`) do if "%%a" equ "0" goto end
rem Делаем паузу в 1 сек.
ping -n 2 127.0.0.1 >nul
rem Идем на :loop
goto loop
:end

echo OK. Closing WarRan
taskkill /IM "WarRun.exe"

echo on

А других способов паузы нету?

Добавлено через 1 минуту
Только чегото taskkill /IM "WarRun.exe" пишет что все нормально, процесс убит, хотя на самом деле ни чего он не убил... мб ребут решит траблу..

bmp 24.09.2008 00:00

Ξ SoaT Ξ, несколько способов создания пауз описаны здесь.
Убиение можно попробывать ужесточить - принудить завершиться и (на всякий случай) убить дочерние процессы:
Код:

taskkill /T /F /IM "WarRun.exe"

Ringo 26.09.2008 23:48

Оффтоп
Оффтоп Гм.. Всегда был уверен в том, что комманда прописнная в батнике не запустится пока не выполниццо предыдущая... =\
Хотя особо в этот процесс не углублялся.

SoaT 27.09.2008 02:00

Ringo, start решает ;)

vasil 07.05.2010 11:01

Помогите пожалуйста с такой проблемой. Мне надо скопировать каталог с одного диска на другой, но проблема в том, что этот каталог имеет еще подкаталоги. Если я применяю в bat файле команду copy например (сopy "d:\KLUpdater\Updates\*.*" "\\Serverrfu\Updates\Update distribution\*.*") то копируется только 2 файла из основного каталога, а подкаталоги не не хотят. Помогите пожалуйста очень надо это сделать.

bmp 07.05.2010 15:19

vasil, если правильно понял и Windows не ниже 2000, то счастье близко:
Код:

xcopy "d:\KLUpdater\Updates\*" "\\Serverrfu\Updates\Update distribution\" /e


Текущее время: 21:06. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot