133 сообщения в этой теме

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)

 

 

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


Ссылка на сообщение
Поделиться на других сайтах

А команда "gtr" что делает ? :ny_ph34r_1:

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


Ссылка на сообщение
Поделиться на других сайтах

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. Только не пиши про игру, напиши просто про файлы бэкап ну придумаешь :) .

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


Ссылка на сообщение
Поделиться на других сайтах

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

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

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


Ссылка на сообщение
Поделиться на других сайтах

SТАLKER

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

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


Ссылка на сообщение
Поделиться на других сайтах

Переименовать текстуры артефактов они у меня под цифрами 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)?

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


Ссылка на сообщение
Поделиться на других сайтах

Strelok_124

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

 

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


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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


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

Войти

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


Войти

  • Пользователи, читающие эту тему   0 пользователей

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