Jump to content
Starter

Строй-bat

Recommended Posts

Starter    232

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 файл, и этот файл должен лежать в папке а не в подпаках. Никакой кирилицы. Только латины. Проверял на цифрах. Работает.

Edited by Starter

Share this post


Link to post
Share on other sites
Vadimische    91

Starter, Спасибо большое, Очень помог :ny_thumbsup::ny_ph34r_1:

Еще не скромный вопросик : Если не затруднит , то можешь написать какое нибудь описание как это работает ( хотя бы по строкам ) - Учится так Учится делать самому :ny_tongue:

Share this post


Link to post
Share on other sites
Starter    232
Vadimische, Написал там же посмотри. Только перед использованием не забудь удалить эти строки. "--" это не комментарии.

Share this post


Link to post
Share on other sites
Vadimische    91

Снова здравствуйте ) А как сделать таймер обратного отсчета ( можно и нормального ) с выводом поочередно цифр посекундно ?

Сделал вот так, но это слишком громоздко и только на малые числа, хотелось бы уменьшить размер и сделать минут до 5ти посекундно :
@echo off
title Timer
color 0a
set a=ping -n 1 -w 
set b=192.168.254.254
cls
echo.
echo     ~ 10 ~
%a% 1000 %b%>nul -n 1
cls
echo.
echo     ~ 9 ~
%a% 1000 %b%>nul -n 1
cls
echo.
echo     ~ 8 ~
%a% 1000 %b%>nul -n 1
cls
echo.
echo     ~ 7 ~
%a% 1000 %b%>nul -n 1
cls
echo.
echo     ~ 6 ~
%a% 1000 %b%>nul -n 1
cls
echo.
echo     ~ 5 ~
%a% 1000 %b%>nul -n 1
cls
echo.
echo     ~ 4 ~
%a% 1000 %b%>nul -n 1
cls
echo.
echo     ~ 3 ~
%a% 1000 %b%>nul -n 1
cls
echo.
echo     ~ 2 ~
%a% 1000 %b%>nul -n 1
cls
echo.
echo     ~ 1 ~
%a% 1000 %b%>nul -n 1
cls
echo.
echo     ~ 0 ~
%a% 1000 %b%>nul -n 1
pause

 

 

Share this post


Link to post
Share on other sites
Starter    232

Vadimische,

timeout /t 30 /nobreak

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

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

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

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

 

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

 

 

Edited by Starter

Share this post


Link to post
Share on other sites
Vadimische    91

Starter

В WinXP 32bit команда "timeout" не действует ( по крайней мере у меня ).

----------

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

Share this post


Link to post
Share on other sites
Starter    232

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)

 

 

Share this post


Link to post
Share on other sites
Starter    232

Vadimische,

EQL - равно

NEQ - не равно

LSS - меньше

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

GTR - больше

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

 

Share this post


Link to post
Share on other sites
Vadimische    91

1 ) А как сделать сравнение 2х имен ( не известных ) по длине названия, чтоб в итоге использовался БАТником файл с более коротким именем ?

2 ) Возможно ли сделать так, чтобы размер шрифта автоматически был "Заглавными" буквами при создании папки с именем например по такому БАТнику :

:: Находит худовый [ *_h*.ogf ] фаил и присваивает его имя новой созданой папке игнорируя название мировой модели.

@ECHO OFF
if exist *_h*.ogf (
   goto continue
) else (
   exit
)
:continue
md temp_models
SETLOCAL EnableDelayedExpansion
dir /b "*_h*.ogf">nul && set f=true
if !f!==true (
set f=false
dir /b "*_h*.ogf">temp_models.txt
for /F "tokens=1 delims=" %%n in (temp_models.txt) do (
set x=%%n
set x=!x:_h.ogf=!
set x=!x:_hud.ogf=!
set x=!x:w_=!
set x=!x:wpn_=!
)
if exist temp_models.txt del /q temp_models.txt
ren temp_models !x!
)
endlocal
exit

 

Edited by Vadimische

Share this post


Link to post
Share on other sites
Starter    232
Vadimische, Извиняй сейчас не могу помощь, скоро в отъезд и дел много нужно сделать. Попробуй отписать на Oszone, создать там тему в разделе cmd\bat. Только не пиши про игру, напиши просто про файлы бэкап ну придумаешь :) .

Share this post


Link to post
Share on other sites
SТАLKER    0

Здравствуйте.

Подскажите пожалуйста как сделать батник который сперва переименовывает текстуры а затем запускает игру? Это реально?


Ищу хабар.

Share this post


Link to post
Share on other sites
Vadimische    91

SТАLKER

По конкретней опиши что нужно. Во что переименовывать и какие текстуры.

Share this post


Link to post
Share on other sites
SТАLKER    0

Переименовать текстуры артефактов они у меня под цифрами 1, 2 ......67, переименовывались по кругу 1 в 2, 2 в 3 и так далее


Ищу хабар.

Share this post


Link to post
Share on other sites
Vadimische    91

SТАLKER

Например вот такой БАТник ( просто пропиши свои пути вверу и все ) :

@ ECHO OFF
set GameFolder="D:\S.T.A.L.K.E.R"
set GameTextures="D:\S.T.A.L.K.E.R\gamedata\textures"
md %GameFolder%\temp
for /l %%i in (1,1,67) do move %GameTextures%\%%i.dds %GameFolder%\temp\%%i.dds

set /a num1=68
set /a num2=67
:sch
set /a num1=%num1%-1
set /a num2=%num2%-1
:: echo %num1% %num2%    // отладочная строка для проверки соответствия номеров
move %GameFolder%\temp\%num1%.dds %GameTextures%\%num2%.dds 
if %num2% gtr 1 (goto sch)

move %GameFolder%\temp\1.dds %GameTextures%\67.dds 
del /F /Q .\%GameFolder%\temp

start %GameFolder%\bin\XR_3DA.exe
exit

 

П.С. Starter проверь на правильность написания БАТника плиз :ny_ph34r_1:

 

Добавлено через 37 мин.:

Вот еще организовал кое что :

@ECHO OFF
title "Start Menu"
Color 0A
echo.
echo 1 ) PUNKT_1
echo 2 ) PUNKT_2
echo 3 ) PUNKT_3
echo 4 ) PUNKT_4
echo.
:error_number
set /p userinp=Please enter section number [1/2/3/4], Quit [q] : 
set userinp=%userinp:~0,1%
if "%userinp%"=="1" goto punkt_1
if "%userinp%"=="2" goto punkt_2
if "%userinp%"=="3" goto punkt_3
if "%userinp%"=="4" goto punkt_4
if "%userinp%"=="q" goto and
echo.
Color 0C
echo !!! ERROR SECTION NUMBER !!!
echo.
goto error_number
:: 
:PUNKT_1
echo PUNKT_1 = OK
goto and
::
:PUNKT_2
echo PUNKT_2 = OK
goto and
::
:PUNKT_3
echo PUNKT_3 = OK
goto and
::
:PUNKT_4
echo PUNKT_4 = OK
:and
pause
exit

 

Преимущество в том , что можно сделать сколько угодно пунктов.

Edited by Vadimische

Share this post


Link to post
Share on other sites
Starter    232

Vadimische, Ну если работает значит всё правильно :).

Я бы так сделал (не проверял код):

set /a pim=0
:pvtr
set /a pim=pim+1
set /a vim=pim+1
ren %pim%.dds %vim%.dds
if pim lss 67 goto pvtr

Кстати насчёт меню: есть у меня перепатчер игры на скрипте bat написан. Там как раз есть меню. Жаль исходник не сохранился. Вот ссылка если интересно.

Edited by Starter

Share this post


Link to post
Share on other sites
Strelok_124    0

Доброго времени суток! Можете помочь создать батник, чтобы он проверял модели (формат .ogf и находящиеся в папке или подпапках с батником), и в отдельный текст (формат .txt) записывал к какой модели привязаны какие текстуры (с путём от папки texture)?


32481252.f.500.500.jpg

Share this post


Link to post
Share on other sites
Vadimische    91

Strelok_124

Просто батником такое сделать вряд ли получится.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

AMK-Team.ru

×
×
  • Create New...