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

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

Deep2007 30-12-2009 15:52 1307666

Сравнение и замена в файлах .txt
 
Есть 2 файла: 1.txt и 2.txt (оба - ANSI), лежащие в одной папке.
Пример содержимого файла 1.txt:
Код:

[TMainForm]
TabPages.0=Каталоги
TabPages.1=Категории
 
[STRINGS]
001=Неиспользованная кнопка
003=Ошибка при сохранении конфигурации
 
[TIPS]
001=...программа не бесплатна? Регистрируясь, вы помогаете автору в разработке новых версий программы, а также получаете доступ к использованию всех ее возможностей.
002=...вы можете настроить размер кнопок панели инструментов? Загляните в настройки и установите размер, более всего подходящий для вашего экрана.
 
[TLendingDisksForm]
NameLabel=На руках у /047 Взят у:
RadioAvailable=Доступен

Пример содержимого файла 2.txt (умышленно привел одинаковые строки):
Код:

[TMainForm]
TabPages.0=Catalogs
TabPages.1=Categories
 
[STRINGS]
001=Unused button
003=Error saving config
 
[TIPS]
001=...this program is not free? By registering, you will support the shareware concept and help the author to develop newer, more advanced versions. You will also receive a registration code to unlock the program to its full potential.
002=...you can adjust size of buttons in a toolbar. Have a look in the program settings and resize them to fit your screen best.
 
[TLendingDisksForm]
NameLabel=Lent to /047 Borrowed from:
RadioAvailable=Available

Как видно, в файлах есть секции (например - [TMainForm], [TLendingDisksForm]). Ее имя всегда в [ ], и начинается с новой строки. Выходит, что в имени секции первый символ в строке - [, последний - ].
В секциях есть строки (напимер - TabPages.0=Catalogs, TabPages.1=Categories). Они тоже начинаются с новой строки и все написаны без переносов (в 1 строке).

Нужно, чтобы файл .cmd (лежит в этой же папке) нашел совпадающие по левой части строки, (все, что до символа = ), и если такая строка в обоих файлах есть - заменил бы правую часть этой строки в файле 2.txt, правой частью этой строки из 1.txt. Если такой строки одновременно в 2-х файлах нет - ничего не делать.

Максимальная длина имени секции (без знаков [ ]) - 18 символов. В правой части строк также встречаются символы [ ], но они не стоят в начале строки. Последняя строка в конце каждой секции - всегда пустая.

Если можно - помогите с написанием такого файла. Самому не хватит ума.

gora 30-12-2009 16:04 1307676

Цитата:

Цитата Deep2007
нашел совпадающие по левой части строки, (все, что до символа = ), и если такая строка в обоих файлах есть - заменил бы правую часть этой строки »

Очевидно сравнение должно быть по секционным? Ибо 001=Неиспользованная кнопка и 001=...программа не бесплатна? Регистрируясь, вы помогаете автору в разработке новых версий программы, а также получаете доступ к использованию всех ее возможностей. уже имею одинаковую левую часть в одном файле.
Цитата:

Цитата Deep2007
В правой части строк также встречаются символы [ ] »

А спец. символы (скобки, %, ! <, > и т.д.) встречаются в тексте?

Deep2007 30-12-2009 16:59 1307722

Да, посекционным, т.к. в разных секциях встречаются строки с одинаковыми левыми частями.
Спецсимволы в строках есть (в правой части).

Deep2007 12-01-2010 15:56 1318246

Уважаемые участники форума! Таки помогите мне, сам не смогу сделать...

shurc 19-11-2010 19:08 1546626

Всем доброй поры суток.
Нужен .bat файл, который был заменял одни ИП-адреса на другие в файле hosts.

У меня есть файл, который добавляет ИП в файл:

----
if exist %systemroot%\SysWOW64 (
set hosts=%systemroot%\SysWOW64\drivers\etc\hosts
) else (
set hosts=%systemroot%\System32\drivers\etc\hosts
)
cacls %hosts% /E /G All:F
cacls %hosts% /E /G 'б_:F
attrib -s -r -h %hosts%
(echo.
echo #
echo 95.125.144.25 www.site1.com
echo 96.111.113.44 www.site2.com

)>>%hosts%
cacls %hosts% /E /R All
cacls %hosts% /E /R 'б_
ipconfig /flushdns
----

а как мне теперь заменить эти ИПшники на другие?


Время: 14:12.

Время: 14:12.
© OSzone.net 2001-