Войти

Показать полную графическую версию : bat скрипт - увеличение значение параметра на 1


Hadroran
20-12-2018, 12:16
Привет всем.
Есть ини-файл:

[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
@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
megaloman,
Хвала Богам. Спасибо. И всего то в цикле у меня была ошибка, сцобако. Чуть глаз не выпал...

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

alpap
20-12-2018, 16:45
ну и свой вариант прикреплю, пусть будет:

@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




© OSzone.net 2001-2012