|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Изменение текста в ini файлах |
|
|
CMD/BAT - [решено] Изменение текста в ini файлах
|
Пользователь Сообщения: 72 |
Добрый день. Имеются ini файлы, все они лежат в одном месте (Пусть будет D:\test).
Как можно с помощью скрипта изменить сразу несколько строк во всех ini файлах? Нужно поменять PostMark=536871936 на PostMark=1024 и DocVersion=RTM0099 на DocVersion=RTM003-13-17 |
|
Отправлено: 14:45, 23-09-2020 |
Забанен Сообщения: 793
|
romfus, приведите пример ini.
|
Отправлено: 14:52, 23-09-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 72
|
Профиль | Отправить 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
|
Погодите трошки. Сейчас накидаю.
@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
|
Профиль | Отправить 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
|
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
|
Профиль | Отправить PM | Цитировать Нужно скинуть ini файл? Или как то можно кодировку прописать в скрипте?
|
Отправлено: 16:32, 23-09-2020 | #7 |
Забанен Сообщения: 793
|
У вас ini в какой кодировке?
|
Отправлено: 16:37, 23-09-2020 | #8 |
Пользователь Сообщения: 72
|
Профиль | Отправить PM | Цитировать Ansi
|
Отправлено: 16:42, 23-09-2020 | #9 |
Забанен Сообщения: 793
|
Попробуйте "прогнать" сценарий на каком-нибудь одном файле, т.е. строчку for /r D:\test %%i in (*.ini) do call:patch "%%i" замените на call:patch D:\test\имя_существующего_файла.ini
|
Отправлено: 17:05, 23-09-2020 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Как восстановить значки по умолчанию в .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 |
|