PDA

Показать полную графическую версию : [решено] поиск и замена из одного файла в другом


alexmoreman
24-05-2013, 13:06
День Добрый!
В понимании что вроде подобные темы имеются но ответа ненашел.
Итак, имеются 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
@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
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
мал мала остается проблемка после обработки выглядит следующим образом »
Что именно так выглядит? Файл new.txt? И про какую лишнюю строку речь?
У меня win7 х64, проверял на Ваших данных все работает.
Прикрепите свои файлы в архиве к посту, может у Вас там что-то хитрое присутствует.

alexmoreman
26-05-2013, 23:50
gora, Вот прилагаю архив. там есть некие переменные может и из за них.

Georgio
27-05-2013, 01:00
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
Georgio, разумеется я ими пользуюсь по необходимости. но не могуч в больших знаниях. и @ECHO OFF я не забыл поставить но не фурычит нормально, ничего не придумываю. Все равно спасибо ребят огромное! я увы справился ручками раз как говорится головы нет)))




© OSzone.net 2001-2012