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

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

ASIDS 17-09-2012 09:03 1990107

BAT Либо что-то с заменой строк в файле
 
Здравствуйте, появилась задача в которой нужно заменить в файле куча текста


Вот пример текста

String_ID Skill_Description
640002002 3초 마다 HP <VALUE_FLOAT!op_div=-100>% 감소
640002109 3초 마다 HP <VALUE_FLOAT!op_div=-100>% 감소
640009925 이동 불가
640010116 모든 행동 불가
640010319 이동 속도 <VALUE_FLOAT!op_div=-100>% 감소
640010432 이동 불가

String_ID Skill_Description
640002004 Every 3Sec HP <VALUE_FLOAT!op_div=-100>% Decrease
640002106 Every 3Sec HP <VALUE_FLOAT!op_div=-100>% Decrease
640009919 Cannot Move
640010110 Cannot perform a action
640010316 Move Speed <VALUE_FLOAT!op_div=-100>% Decrease
640010430 Cannot Move


Помогите как с этим можно разобраться, в оригинале каждый раз меняется ID строчек и получается весь перевод нужно менять каждый раз, и притом меняется очерёдность строк, и поэтому тупое копирование в ексель и замена всех айди на оригенал не получится, нужно менять оригенал текста на перевод например из файла где строки стоят паралельно оригенал и перевод, и заменять именно этот текст.




3초 마다 HP <VALUE_FLOAT!op_div=-100>% 감소 <------ Every 3Sec HP <VALUE_FLOAT!op_div=-100>% Decrease
3초 마다 HP <VALUE_FLOAT!op_div=-100>% 감소 <------ Every 3Sec HP <VALUE_FLOAT!op_div=-100>% Decrease
이동 불가 <------ Cannot Move
모든 행동 불가 <------ Cannot perform a action
이동 속도 <VALUE_FLOAT!op_div=-100>% 감소 <------ Move Speed <VALUE_FLOAT!op_div=-100>% Decrease
이동 불가 <------ Cannot Move


Менять в ручную не реал, так как там 503 строки с этим... а в новом оригинале уже 530, и всё конечно перемешано и имеет новые ID


Есть логические идеи на счет этого но реализацию их я не знаю
Чисто текст который нужно заменить я могу положить в один фаил, а текст на который нужно заменить я могу положить в другой, и они будут иденьтичны по строчкам, тоесть строка 1 будет соответствовать строке в файле в котором лежит замена, то есть взять например первую строчку заменить и перейти к другой:
Найти строчку с текстом из файла "B" в файле "A" и заменить строчкой с текстом из файла "С" не заменяя всего содержимого строчки а заменяя только текст из файла "B" и переход на следующую строчку из файла "B" вот так...
Извените что так дотошно описываю, но это как бы и для меня, что я описал точно что я хотел сказать...


Плииз помогите!

gora 17-09-2012 12:49 1990213

Цитата:

Цитата ASIDS
BAT Либо что-то с заменой строк в файле »

Попробуйте vbs:
Код:

' файл скрипта в кодировке UTF-16
Set FSO = CreateObject("Scripting.FileSystemObject")
' исходный файл в кодировке UTF-16
F = "e:\Temp\test.txt"
' получаемый файл в кодировке UTF-16
F2 = "e:\Temp\test2.txt"
Dim dict(4,1)
' словарь исходных фраз
dict(0,0) = "3초 마다"
dict(1,0) = "감소"
dict(2,0) = "이동 불가"
dict(3,0) = "모든 행동 불가"
dict(4,0) = "이동 속도"
' словарь переведенных фраз
dict(0,1) = "Every 3Sec"
dict(1,1) = "Decrease"
dict(2,1) = "Cannot Move"
dict(3,1) = "Cannot perform a action"
dict(4,1) = "Move Speed"

Set rd_file = FSO.OpenTextFile(F, 1, , -1)
Buffer = rd_file.ReadAll
rd_file.Close
For i = 0 To UBound(dict, 1)
        Buffer = Replace(Buffer, dict(i,0), dict(i,1))
Next
Set wr_file = FSO.OpenTextFile(F2, 2, True, -1)
wr_file.Write Buffer
wr_file.Close


ASIDS 17-09-2012 13:06 1990226

Эм... спс но я писал ещё про то что "словарь исходных фраз" и "словарь переведенных фраз" он довольно велик...
Их аж 503 строк... и это перед каждым нужно будет писать dict(0,0) = ""?

ASIDS 17-09-2012 13:44 1990253

ну вроде как сделал =)
Спс за помощь!

Добавил ко всем 503 строкам это dict(0,0) через эксель XD


Время: 01:04.

Время: 01:04.
© OSzone.net 2001-