Что такое bat? Почему именно bat? Что нужно для создания батников?
Что такое bat? Batch file пакетный файл — текстовый файл в MS-DOS или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. Основная область применения — автоматизация наиболее рутинных операций, что регулярно приходится совершать пользователю компьютера. Примерами таких операций могут служить — обработка текстовых файлов; копирование, перемещение, переименование, удаление файлов; работа с папками; архивация; создание резервных копий баз данных и т. п.
Почему именно bat? Наиболее доступное и простое средство для работы с ресурсами. Конечно C/C++ или другие языки программирования лучше, но для работы с модами хватит и bat. С батниками справится даже новичок.
Что нужно для создания батников? Можно использовать стандартный блокнот, но автор рекомендует AkelPad.
Автор:Starter
[url=http://technet.microsoft.com/ru-ru/library/cc778084(WS.10).aspx]Справочник по параметрам командной строки[/url]
Готовые батники
Положить в одну папку вместе с *.ltx файлами, запустить и ввести имя секции. Выведенные параметры объекта смотреть в "имя_файла.ltx_[имя_секции]_config_out.txt" в этой же папке.
Code
::Выделение из файла параметров объекта ::Автор Starter АМК форум ::------------------------ ::Ожидание ввода ::Удаление комментариев ::Выделение из файла и перенос в %namefile%_%sp%_config_out.txt
@echo off title Выделение из файла параметров объекта :zanovo if not exist %SystemDrive%\temp\starter_bat (mkdir %SystemDrive%\temp\starter_bat) set ptmp=%SystemDrive%\temp\starter_bat set outfile=config_out.txt set file=*.ltx FOR /L %%i IN (1,1,10) DO (if exist %ptmp%\tmp%%i.txt (del /q %ptmp%\tmp%%i.txt) set tmp%%i=%ptmp%\tmp%%i.txt) if exist *%outfile% del /q *%outfile% @echo Выделение из файла параметров объекта @echo Автор Starter АМК форум @echo. set /p spv=Введите имя секции (например: novice_outfit): set sp=[%spv%] @echo %sp% cls @echo Поиск %sp% ... for /f "tokens=1 delims=;" %%i in ('findstr /b /v ";.*" %file%') do 1>>%tmp1% echo %%i ( SETLOCAL EnableDelayedExpansion set "TYPE=N"& for /f "usebackq delims=" %%a in (%tmp1%) do (set "$a=%%a" if not "!$a!"=="!$a:%sp%=!" set "TYPE=Y" if "!TYPE!"=="Y" echo !$a! ))>"%tmp2%" for /f "tokens=1* delims=:" %%a in (%tmp2%) do (set namefile=%%a @echo !namefile! !sp!>>!namefile!_%sp%_%outfile% @echo -------------------->>!namefile!_%sp%_%outfile% @echo.>>!namefile!_%sp%_%outfile% @echo.%%b>>!namefile!_%sp%_%outfile% goto next) :next ( SETLOCAL EnableDelayedExpansion set "TYPE=N"& for /f "usebackq skip=1 delims=" %%a in (%tmp2%) do (set "$a=%%a" if not "!$a!"=="!$a:[=!" set "TYPE=Y" if "!TYPE!"=="N" echo !$a! ))>>"%tmp3%" for /f "tokens=1* delims=:" %%a in (%tmp3%) do @echo.%%b>>%namefile%_%sp%_%outfile% endlocal FOR /L %%i IN (1,1,10) DO (if exist %ptmp%\tmp%%i.txt (del /q %ptmp%\tmp%%i.txt) set tmp%%i=%ptmp%\tmp%%i.txt) cls if exist %namefile%_%sp%_%outfile% ( start %namefile%_%sp%_%outfile% ) else ( @Echo Не найдено. pause>nul cls goto zanovo )
Удаляет все комментарии в *.ltx файле. Положить батник в одну папку вместе с конфигами.
Code
::Удаление комментариев в конфиге ::Автор Starter АМК форум ::------------------------ ::Удаление комментариев ::Вывод в "%outpath%\!namefile!"
@echo off title Удаление комментариев в конифге SETLOCAL EnableDelayedExpansion @echo Удаление комментариев в конфиге @echo Автор Starter АМК форум @echo. if not exist *.ltx (@echo *.ltx файлы не найдены... pause>nul goto :eof) @echo Загрузка конфигов... if not exist %SystemDrive%\temp\starter_bat (mkdir %SystemDrive%\temp\starter_bat) set ptmp=%SystemDrive%\temp\starter_bat set outpath=out_del_comment if exist %outpath% (rd /s /q %outpath% md %outpath% ) else (md %outpath%) set file=*.ltx FOR /L %%i IN (1,1,10) DO (if exist %ptmp%\tmp%%i.txt (del /q %ptmp%\tmp%%i.txt) set tmp%%i=%ptmp%\tmp%%i.txt) for /f "tokens=1 delims=;" %%i in ('findstr /b /v ";.*" %file%') do 1>>%tmp1% echo %%i for /f "tokens=1* delims=:" %%a in (%tmp1%) do (set namefile=%%a @echo Обработка !namefile! @echo.%%b>>%outpath%\!namefile! cls) FOR /L %%i IN (1,1,10) DO (if exist %ptmp%\tmp%%i.txt (del /q %ptmp%\tmp%%i.txt) set tmp%%i=%ptmp%\tmp%%i.txt) endlocal
Собирает все секции в файлах. Положить батник вместе с *.ltx файлами.
@echo off title Сбор секций SETLOCAL EnableDelayedExpansion @echo Сбор секций @echo Автор Starter АМК форум @echo. if not exist *.ltx (@echo *.ltx файлы не найдены... pause>nul goto :eof) @echo Загрузка конфигов... if not exist %SystemDrive%\temp\starter_bat (mkdir %SystemDrive%\temp\starter_bat) set ptmp=%SystemDrive%\temp\starter_bat set outpath=out_sect if exist %outpath% (rd /s /q %outpath% md %outpath% ) else (md %outpath%) set file=*.ltx FOR /L %%i IN (1,1,10) DO (if exist %ptmp%\tmp%%i.txt (del /q %ptmp%\tmp%%i.txt) set tmp%%i=%ptmp%\tmp%%i.txt) for /f "tokens=1 delims=;" %%i in ('findstr /b /v ";.*" %file%') do 1>>%tmp1% echo %%i for /f "tokens=1 delims=]" %%u in ('findstr "[" %tmp1%') do 1>>%tmp2% echo %%u] for /f "tokens=1* delims=:" %%a in (%tmp2%) do (set namefile=%%a cls @echo Обработка !namefile! @echo.%%b>>%outpath%\!namefile!_out.txt) start %outpath% FOR /L %%i IN (1,1,10) DO (if exist %ptmp%\tmp%%i.txt (del /q %ptmp%\tmp%%i.txt) set tmp%%i=%ptmp%\tmp%%i.txt) endlocal
Сообщение отредактировал Nik - Понедельник, 18.06.2012, 10:50