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

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

alexmoreman 24-05-2013 13:06 2155412

поиск и замена из одного файла в другом
 
День Добрый!
В понимании что вроде подобные темы имеются но ответа ненашел.
Итак, имеются 2 файла (языки перевода)
имеют вид
Код:

COM_VIRTUEMART_ORDER_PRINT_PAYMENT_TAX="Payment Tax"
COM_VIRTUEMART_ORDER_PRINT_PO_DATE="Order Date"
COM_VIRTUEMART_ORDER_PRINT_PO_NUMBER="Order Number"

и такие в другом
Код:

COM_VIRTUEMART_ORDER_PRINT_PAYMENT_TAX="Налог"
COM_VIRTUEMART_ORDER_PRINT_PO_DATE="Дата заказа"
COM_VIRTUEMART_ORDER_PRINT_PO_NUMBER="Номер заказа"

строк разумеется гораздо больше, это лишь для премера как они выглядят.
можно было просто их заменить и все но нет. в анг есть строки которых нет в переведенном.
так вот хочется сделать перенос с русского в англ документ переведенных строк а непереведенные оставить как есть. и потом я переведу их.
неизменные как видно символы = и ""
вот не знаю как реализовать сравнение первой части строки до = и заменой из второго документа что после =
строки понятно могут быть не по порядку так как в анг имеются вновь добавленные без перевода.
Надеюсь подробно. Спасибо кто откликнется!

gora 26-05-2013 09:47 2156412

Код:

@Echo Off
Setlocal EnableDelayedExpansion
Set en=E:\Temp 1\en.txt
Set ru=E:\Temp 1\ru.txt
Set new=E:\Temp 1\new.txt

For /F "tokens=* usebackq delims=" %%i In ("%en%") Do Set $%%i
For /F "tokens=* usebackq delims=" %%i In ("%ru%") Do Set $%%i
(For /F "tokens=* delims=" %%i In ('Set $') Do (Set ti=%%i& Echo !ti:~1!))>"%new%"


alexmoreman 26-05-2013 17:36 2156631

gora, спасибо, почти супер! только мал мала остается проблемка после обработки выглядит следующим образом
Код:

C:\Windows\system32>(Set ti=$COM_VIRTUEMART_CART_ORDERDONE_THANK_YOU="Спасибо за заказ"  & Echo !ti:~1! )
COM_VIRTUEMART_CART_ORDERDONE_THANK_YOU="Спасибо за заказ"

C:\Windows\system32>(Set ti=$COM_VIRTUEMART_CART_OVERVIEW="Корзина"  & Echo !ti:~1! )
COM_VIRTUEMART_CART_OVERVIEW="Корзина"

C:\Windows\system32>(Set ti=$COM_VIRTUEMART_CART_PAYMENT="Оплата"  & Echo !ti:~1! )
COM_VIRTUEMART_CART_PAYMENT="Оплата"

может из за того что винда х64 и приходится от админа запускать..
ну и лишняя строка ни к чему тоже сбственно пустая.
Атак прям супер.

gora 26-05-2013 18:23 2156653

Цитата:

Цитата alexmoreman
мал мала остается проблемка после обработки выглядит следующим образом »

Что именно так выглядит? Файл new.txt? И про какую лишнюю строку речь?
У меня win7 х64, проверял на Ваших данных все работает.
Прикрепите свои файлы в архиве к посту, может у Вас там что-то хитрое присутствует.

alexmoreman 26-05-2013 23:50 2156830

Вложений: 1
gora, Вот прилагаю архив. там есть некие переменные может и из за них.

Georgio 27-05-2013 01:00 2156858

Цитата:

Цитата alexmoreman
Код:

C:\Windows\system32>(Set ti=$COM_VIRTUEMART_CART_ORDERDONE_THANK_YOU="Спасибо за заказ" & Echo !ti:~1! )
COM_VIRTUEMART_CART_ORDERDONE_THANK_YOU="Спасибо за заказ"
C:\Windows\system32>(Set ti=$COM_VIRTUEMART_CART_OVERVIEW="Корзина" & Echo !ti:~1! )
COM_VIRTUEMART_CART_OVERVIEW="Корзина"
C:\Windows\system32>(Set ti=$COM_VIRTUEMART_CART_PAYMENT="Оплата" & Echo !ti:~1! )
COM_VIRTUEMART_CART_PAYMENT="Оплата"

»

Причина произошедшего -- запуск BAT-файла без @ECHO OFF, хотя у gora эта команда присутствует в коде.

alexmoreman, Вы умеете работать с BAT-файлами?

alexmoreman 27-05-2013 09:33 2156961

Georgio, разумеется я ими пользуюсь по необходимости. но не могуч в больших знаниях. и @ECHO OFF я не забыл поставить но не фурычит нормально, ничего не придумываю. Все равно спасибо ребят огромное! я увы справился ручками раз как говорится головы нет)))


Время: 18:21.

Время: 18:21.
© OSzone.net 2001-