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

Строй-bat

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

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

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

Ссылка на комментарий

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

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

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

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

Ссылка на комментарий

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

Сделал вот так, но это слишком громоздко и только на малые числа, хотелось бы уменьшить размер и сделать минут до 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

 

 

Ссылка на комментарий

Vadimische,

timeout /t 30 /nobreak

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

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

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

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

 

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

 

 

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

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

Ссылка на комментарий

Starter

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

----------

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

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 - больше или равно,

 

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

Ссылка на комментарий

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

 

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

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

Ссылка на комментарий

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

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

Ищу хабар.

Ссылка на комментарий

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

Ищу хабар.

Ссылка на комментарий

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

 

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

Изменено пользователем Vadimische
Ссылка на комментарий

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 написан. Там как раз есть меню. Жаль исходник не сохранился. Вот ссылка если интересно.

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

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

Ссылка на комментарий

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

32481252.f.500.500.jpg
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

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