Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   bat скрипт - увеличение значение параметра на 1 (http://forum.oszone.net/showthread.php?t=338329)

Hadroran 20-12-2018 12:16 2847153

bat скрипт - увеличение значение параметра на 1
 
Привет всем.
Есть ини-файл:
Код:

[UpdateSetting]
UpdateReady=1
MainVersion=5.2.0.357
SecVersion=4.0.1

Надо батником найти параметр MainVersion и увеличить значение 357 на 1.

Просматривал подобные темы, но там только поиск и замена значений только на заданные.
Например с примером
Server_address=XXX.XXX.XXX.XXX
Server_port=XXXX

Спасибо.

megaloman 20-12-2018 14:59 2847195

Код:

@Echo Off
cls
        Set "Ini=Z:\Box_In\file.ini"
        Set "KeyWord=MainVersion"

        >Nul Move /Y "%Ini%" "%Ini%.bak" &&(
                >"%Ini%" (For /f "usebackq tokens=1* delims==" %%A in ("%Ini%.bak") Do (
                        If /I Not "%KeyWord%"=="%%A" If "%%B"=="" (Echo %%A)
                        If /I Not "%KeyWord%"=="%%A"  If Not "%%B"=="" (Echo %%A=%%B)
                        If /I "%KeyWord%"=="%%A" (
                                For /f "tokens=1,2,3,4 delims=." %%i in ("%%B") Do (
                                        Call Set /A LL=%%l+1
                                        (Call Echo %%A=%%i.%%j.%%k.%%LL%%)
                                )
                        )
                ))
        )
Pause

Естественно, при условии что MainVersion=x.x.x.x

Hadroran 20-12-2018 15:31 2847201

megaloman,
Хвала Богам. Спасибо. И всего то в цикле у меня была ошибка, сцобако. Чуть глаз не выпал...

Да еще и с бекапом!?!?!?! Круто!

alpap 20-12-2018 16:45 2847217

ну и свой вариант прикреплю, пусть будет:
Код:

@echo off
set "f=file.ini"
set "sz=MainVersion"

<"%f%">$ (for /f "delims=" %%a in ('more') do 2>nul set "%%a"& @call :# "%%a")
>nul move $ "%f%"
pause& exit

:#
 @echo %~1|>nul find "%sz%" && (
  for /f "tokens=1-4 delims=." %%a in ('call echo %%%sz%%%') do set /a t4=%%d+1& call echo %sz%=%%a.%%b.%%c.%%t4%%
 ) || (
  echo %~1
 )
@exit /b



Время: 06:22.

Время: 06:22.
© OSzone.net 2001-