|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум 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 | |
|