Перейти к контенту

Строй-bat


Starter

Рекомендуемые сообщения

(изменено)

*.cmd/*.bat


Главное!
Ни на что не претендую, делаю батники для быстрой и удобной работы с модами, предлагаю и вам тоже. Но кто как хочет, тот так и модостроит, поэтому просьба не ругать.
Использовать батники в мирных целях!!!
Системные требования:
Любая операционная система Windows (желательно XP или 7, у самого семёрка x64)


Изменено пользователем Dennis_Chikin
  • Спасибо 1
  • Нравится 2
  • Полезно 1

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение

*Shoker*, Удаление комментариев мне понадобилось чтобы выдирать секции да и вообще всё, батник ищет все значения и может случайно схватить из комментария, а это уже будет не правильно, поэтому он сначала удаляет комментарии а затем работает с файлом.

Изменять координаты? Думаю что нет ничего невозможного даже в батнике :). Надо подумать может получиться.

А что за GUI?

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Wookie,

Добавь строку chcp 866>nul, ставить перед выводами на экран. Хотя у меня в нотепаде не сработало.

Можно так же как и TRAMP14 предложил.

То есть писать каракулями:

@echo off
@echo ’Ґбв Ў в­ЁЄ®ў ®в ‚гЄЁ - ’ҐЄбв
set /p name=Љ Є вҐЎп §®ўгв: 
@echo %name%, е®а®иҐҐ Ё¬п
set /p age=‘Є®«мЄ® ⥡Ґ «Ґв: 
@echo %age%, ®Ј® бЄ®Є 
pause>nul

Для удаление папки команда rd

rd /s /q d:\games\Stalker\gamedata

/S Удаление дерева каталогов, т. е. не только указанного каталога, но и всех содержащихся в нем файлов и подкаталогов.

/Q Отключение запроса подтверждения при удалении дерева каталогов с помощью ключа /S.

Изменено пользователем Starter

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Comador, Прав. FANAT, тебе тогда нужно сделать список файлов которые нужно переименовать.

 

if exist gamedata.db1 (
   ren gamedata.db1 --gamedata.db1
) else (
   ren --gamedata.db1 gamedata.db1
)
::---------
if exist gamedata.db2 (
   ren gamedata.db2 --gamedata.db2
) else (
   ren --gamedata.db2 gamedata.db2
)

Или вот что-то этого рода, каждый раз при запуске батник будет проверять имя файла и переименовывать на обратный. Запустил один раз получил два тире "--", запустил второй раз тире убрались.

Можно сделать через список вынесенный в отдельный txt вместе с процедурой, батник будет намного короче и легче в управление, но сложен для создания (кому как).

Изменено пользователем Starter

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Marafon6540, Идя отличная, но очень давнишняя, первоначально такое предложил года три назад max_max_08.

Немного длинноват у тебя батник. Я бы сделал так:

setlocal enableextensions enabledelayedexpansion
@echo off
set /p name="Введите название мода: "
set /p num="Введите номер патча: "

::Подготовка мода------------------
set old_file="old_gamedata"
set file="gamedata"
set file_new="gamedata_%name%"
call :reorg

::Подготовка патча-------------
set old_file="old_bin"
set file="bin"
set file_new="bin_%num%"
call :reorg

::Подготовка fsgame.ltx-------------
set old_file="fsgame_mods\old_fsgame.ltx"
set file="fsgame_mods\fsgame.ltx"
set file_new="fsgame_mods\fsgame_%name%.ltx"
call :reorg

::Запуск, игра
bin\XR3DA.exe -nointro -noprefetch

::Возврат имён и закрытие------------
ren "gamedata" "gamedata_%name%"
ren "bin" "bin_%num%"
ren "fsgame_mods\fsgame.ltx" "fsgame_mods\fsgame_%name%.ltx"
if exist "old_gamedata" ren "old_gamedata" "gamedata"
if exist "old_bin" ren "old_bin" "bin"
if exist "fsgame_mods\old_fsgame.ltx" ren "fsgame_mods\old_fsgame.ltx" "fsgame_mods\fsgame.ltx"

endlocal
goto :eof


::Процедура подготовки---------
:reorg
if exist "%file_new%" (
if exist "%file%" ren "%file%" "%old_file%"
ren "%file_new%" "%file%"
)
goto :eof

 

 

У меня вопрос: как ты через батник организовал GUI? Я могу предположить что только при помощи языка программирования типа Делфи или Си++.

 

Wookie,

@echo off
:nach
set text="not"
set /p text=
if "%text%" == "not" goto nach
@echo Ok

Изменено пользователем Starter

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
(изменено)
Marafon6540, Не слышал от такой среде. Но если говоришь простая то это очень хорошо, для тех кто работает с мелочью и с батниками отлично :). Сам начала по совету _zero_cool_ на Builder 6, сейчас шинкую на RAD Studio, нравится :). Изменено пользователем Starter

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Wookie, Например такой батник в файле 1.txt заменяет "###" на "Автор Петрович", на выходе готовый файл 2.txt.

setlocal enabledelayedexpansion

Set infile="1.txt"

Set find="###"

Set replace="Автор Петрович."

 

setlocal enabledelayedexpansion

for /F "tokens=* delims=," %%n in (!infile!) do (

set LINE=%%n

set TMPR=!LINE:%find%=%replace%!

Echo !TMPR!>>2.txt

)

endlocal

pause

 

 

Изменено пользователем Starter

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
Kontro-zzz, А ну если в этом плане то по мне тоже Punto отлично, про переключение забыл уже. Если вдруг ошибка перевода то Break всегда под рукой, или можно выделить и нажать комбинацию настраиваемых клавиш для перевода кодировки или смена регистра.

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

_Val_, Пишет белиберду потому что кодировка должна быть выбрана русская OEM86. Выбирать в AkelPad при сохранение. По скриптам сказать не могу, не работал с ними ни разу. Выложи пример скрипта в котором нужно удалить комментарии. Чтобы в этом скрипте встречались все виды комментариев, все виды случая.

Хотя вряд ли, delims findstr почему-то ругаются на знак "-". Но такое можно сделать на C++. Если надо то попробую сделать.

Изменено пользователем Starter

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Vadimische, Чтобы переименовать папку нужно взять откуда-то значение имени на который нужно переименовать. Вот я и спрашиваю откуда его взять как ты указываешь этот txt в батнике?

 

md temp

set name="отсутсвует значение"

ren tmp %name%

 

А вообще можно сразу создавать папку с нужным именем.

md %name%

 

ХОВАН, Спасибо! :)

Изменено пользователем Starter

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Vadimische, Ну тогда такой батник.

@echo off -- ну это понятно
SETLOCAL EnableDelayedExpansion -- для локализации переменных, нужно чтобы в форе переменным присвоения делать.
for /f "tokens=1 delims=" %%i in ('dir /b /a:d') do ( -- ищем вокруг себя только папки
set folder=%%i --приравниваем к переменной
dir /b "!folder!\*.txt">nul && set f=true -- ищем в этой папке любой текстовой и если находим то флажок true-чить
if !f!==true ( -- проверяме флажок на верность
set f=false -- сразу же убиваем флажок
dir /b "!folder!\*.txt">1.txt -- выводим в 1.txt имя найденного txt файла 
for /F "tokens=1 delims=" %%n in (1.txt) do ( -- шарим 1.txt для вытаскивания имени
set tmp=%%n -- приравниваем
set tmp=!tmp:.txt=! -- из строки убираем ".txt" чтобы осталось только имя
)
if exist 1.txt del /q 1.txt -- удаляем 1.txt
ren !folder! !tmp! -- переименовываем
)
)
endlocal -- убиваем хэдшотом локализацию (важно именно хэдшотом :))

 

 

Есть ограничения: класть батник туда же где и сама папка, причем эта папка должна быть одна и никаких больше. В папке должен быть только один txt файл, и этот файл должен лежать в папке а не в подпаках. Никакой кирилицы. Только латины. Проверял на цифрах. Работает.

Изменено пользователем Starter

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
Vadimische, Написал там же посмотри. Только перед использованием не забудь удалить эти строки. "--" это не комментарии.

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Vadimische,

timeout /t 30 /nobreak

/T <таймаут> Время ожидания в секундах. Допустимый интервал: от -1 до 99999 секунд.

/NOBREAK Игнорировать нажатия клавиш, ждать указанное время.

Примечание: значение таймаута, равное -1 задает неограниченное время

ожидания до нажатия клавиши.

 

В конце концов твой можно сократить до 5-10 строк при помощи for или goto.

 

 

Изменено пользователем Starter

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение

Vadimische, timeout действует в win7.

@echo off 
set /a num=10
:sch
cls
@echo.
@echo     %num%
ping -n 1 -w 1000 192.168.254.254>nul -n 1
set /a num=%num%-1
if %num% gtr -1 (goto sch)

 

 

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение

Vadimische,

EQL - равно

NEQ - не равно

LSS - меньше

LEQ - меньше или равно

GTR - больше

GEQ - больше или равно,

 

ЯДиск папка с крутым схроном!

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...