Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Изменение текста в ini файлах

Ответить
Настройки темы
CMD/BAT - [решено] Изменение текста в ini файлах

Пользователь


Сообщения: 72
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день. Имеются ini файлы, все они лежат в одном месте (Пусть будет D:\test).
Как можно с помощью скрипта изменить сразу несколько строк во всех ini файлах?
Нужно поменять PostMark=536871936 на PostMark=1024 и DocVersion=RTM0099 на DocVersion=RTM003-13-17

Отправлено: 14:45, 23-09-2020

 

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


romfus, приведите пример ini.

Отправлено: 14:52, 23-09-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 72
Благодарности: 0

Профиль | Отправить PM | Цитировать


Текст ini:
Код: Выделить весь код
[Main]
SndrFact=–Ђ”ЂЏЋ„„ ѓ€Ѓ„„ ѓ“ Њ‚„ ђ®ббЁЁ Ї® ‚®«Ј®Ја*¤бЄ®© ®Ў«
InnFact=3444012677
KppFact=344401001
Inn=3444268848
Kpp=344401001
DepCode=1118026
SndrTel=
SendCtg=2
SendDate=20200915
ListNum=78000
IndexFrom=400066
MailType=2
MailCtg=1
DirectCtg=1
PayType=2
PayTypeNot=2
TransType=1
PostMark=536871936
MailRank=8
NumContract=8.4.10-09-79
SMSNoticeS=

[Sender]
Sndr=ѓЋ‘“„Ђђ‘’‚…ЌЌЋ… ЉЂ‡…ЌЌЋ… “—ђ…†„…Ќ€… ‚Ћ‹ѓЋѓђЂ„‘ЉЋ‰ ЋЃ‹Ђ‘’€ "Ѓ…‡ЋЏЂ‘Ќ›‰ ђ…ѓ€ЋЌ"
AddressTypeSndr=1
NumAddressTypeSndr=
IndexSndr=400066
RegionSndr=‚®«Ј®Ја*¤бЄ*п
AreaSndr=
PlaceSndr=‚®«Ј®Ја*¤
LocationSndr=
StreetSndr=Ё¬. ‘Є®блॢ*
HouseSndr=2
LetterSndr=Le
SlashSndr=
CorpusSndr=
BuildingSndr=
HotelSndr=
RoomSndr=

[Summary]
MailCount=500
DeliveryRateSum=2700000
DeliveryRateVAT=540000
DeliveryRateTotal=3240000
ValueSum=0
ValueSumRateTotal=0
ValueSumRateVAT=0
NoticeRateTotal=0
NoticeRateVAT=0
SMSNoticeTotal=0
SMSNoticeVAT=0
TotalRate=3240000
TotalRateVAT=540000

[DocVersion]
DocVersion=RTM0099

Отправлено: 15:00, 23-09-2020 | #3


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Погодите трошки. Сейчас накидаю.

Код: Выделить весь код
@echo off
 setlocal enabledelayedexpansion
   for /r D:\test %%i in (*.ini) do call:patch "%%i"
 endlocal
exit /b

:getlines
  for /f %%i in ('find /c /v "" ^< "%~1"') do set "#=%%i"
exit /b

:replace
  3<"%~1" (for /l %%i in (1,1,!#!) do (
    set /p s=<&3
    for /f "tokens=1,* delims==" %%i in ("!s!") do (
      if /i "%%i" equ "postmark" (
        echo:%%i=1024
      ) else if /i "%%i" equ "docversion" (
        echo:%%i=RTM003-13-17
      ) else if "!s:~0,1!" equ "[" (
        echo.
        echo:%%i
      ) else echo:%%i=%%j
    )
  ))>>"%tmp%\ini000.tmp"
  move "%tmp%\ini000.tmp" "%~1" >nul
exit /b

:patch
  call:getlines "%~1"
  call:replace  "%~1"
exit /b

Последний раз редактировалось greg zakharov, 23-09-2020 в 16:01.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:07, 23-09-2020 | #4


Пользователь


Сообщения: 72
Благодарности: 0

Профиль | Отправить PM | Цитировать


Что - то вот такое получается
Код: Выделить весь код
[Main]

SndrFact

InnFact

KppFact

Inn

Kpp

DepCode

SndrTel

SendCtg

SendDate

ListNum

IndexFrom

MailType

MailCtg

DirectCtg

PayType

PayTypeNot

TransType
PostMark=1024

MailRank

NumContract

SMSNoticeS

[Sender]

Sndr

AddressTypeSndr

NumAddressTypeSndr

IndexSndr

RegionSndr

AreaSndr

PlaceSndr

LocationSndr

StreetSndr

HouseSndr

LetterSndr

SlashSndr

CorpusSndr

BuildingSndr

HotelSndr

RoomSndr

[Summary]

MailCount

DeliveryRateSum

DeliveryRateVAT

DeliveryRateTotal

ValueSum

ValueSumRateTotal

ValueSumRateVAT

NoticeRateTotal

NoticeRateVAT

SMSNoticeTotal

SMSNoticeVAT

TotalRate

TotalRateVAT

[DocVersion]
DocVersion=RTM0003-13-17

[Main]

SndrFact

InnFact

KppFact

Inn

Kpp

DepCode

SndrTel

SendCtg

SendDate

------Пропускаю много символов ------------------
[DocVersion]
DocVersion=RTM0003-13-17


Все значения которые нужно поменять поменялись а остальные исчезли, и все это скопировалось много раз

Последний раз редактировалось romfus, 23-09-2020 в 16:12. Причина: 1


Отправлено: 16:05, 23-09-2020 | #5


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


romfus, ещё раз прогнал пять тестов на сотне клонов предоставленного вами ini, но в итоге получаю корректные:
Код: Выделить весь код
[Main]
SndrFact=ЦАФАПОДД ГИБДД ГУ МВД России по Волгоградской обл
InnFact=3444012677
KppFact=344401001
Inn=3444268848
Kpp=344401001
DepCode=1118026
SndrTel=
SendCtg=2
SendDate=20200915
ListNum=78000
IndexFrom=400066
MailType=2
MailCtg=1
DirectCtg=1
PayType=2
PayTypeNot=2
TransType=1
PostMark=1024
MailRank=8
NumContract=8.4.10-09-79
SMSNoticeS=
SMSNoticeS=

[Sender]
Sndr=ГОСУДАРСТВЕННОЕ КАЗЕННОЕ УЧРЕЖДЕНИЕ ВОЛГОГРАДСКОЙ ОБЛАСТИ "БЕЗОПАСНЫЙ РЕГИОН"
AddressTypeSndr=1
NumAddressTypeSndr=
IndexSndr=400066
RegionSndr=Волгоградская
AreaSndr=
PlaceSndr=Волгоград
LocationSndr=
StreetSndr=им. Скосырева
HouseSndr=2
LetterSndr=Le
SlashSndr=
CorpusSndr=
BuildingSndr=
HotelSndr=
RoomSndr=
RoomSndr=

[Summary]
MailCount=500
DeliveryRateSum=2700000
DeliveryRateVAT=540000
DeliveryRateTotal=3240000
ValueSum=0
ValueSumRateTotal=0
ValueSumRateVAT=0
NoticeRateTotal=0
NoticeRateVAT=0
SMSNoticeTotal=0
SMSNoticeVAT=0
TotalRate=3240000
TotalRateVAT=540000
TotalRateVAT=540000

[DocVersion]
DocVersion=RTM003-13-17
Скорее всего дело в кодировке.

Отправлено: 16:24, 23-09-2020 | #6


Пользователь


Сообщения: 72
Благодарности: 0

Профиль | Отправить PM | Цитировать


Нужно скинуть ini файл? Или как то можно кодировку прописать в скрипте?

Отправлено: 16:32, 23-09-2020 | #7


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


У вас ini в какой кодировке?

Отправлено: 16:37, 23-09-2020 | #8


Пользователь


Сообщения: 72
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ansi

Отправлено: 16:42, 23-09-2020 | #9


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Попробуйте "прогнать" сценарий на каком-нибудь одном файле, т.е. строчку for /r D:\test %%i in (*.ini) do call:patch "%%i" замените на call:patch D:\test\имя_существующего_файла.ini

Отправлено: 17:05, 23-09-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Изменение текста в ini файлах

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как восстановить значки по умолчанию в .ini файлах Bai Microsoft Windows 2000/XP 16 13-03-2019 00:14
CMD/BAT - Поиск и замена строк в ini-файлах alex_frog Скриптовые языки администрирования Windows 10 25-11-2014 22:48
CMD/BAT - замена текста в нескольких файлах Alexander_88 Скриптовые языки администрирования Windows 7 03-09-2014 18:33
VBS/WSH/JS - Удаление строк в INI файлах gen0m.rsw Скриптовые языки администрирования Windows 5 27-06-2013 15:03
C/C++ - Поиск текста в файлах student_po Программирование и базы данных 6 04-09-2009 23:33




 
Переход