Войти

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


dark-------13
18-03-2013, 15:02
Здравствуйте,
Подскажите пожалуйста, можно ли ускорить данный скрипт ?

@Echo Off Set infile=obr.xml Set find=^^^<signature^^^> Set replace=^^^<img src="data:image/png;base64, Set find2=^^^</signature^^^> Set replace2=" /^^^> Set find3=^^^<portrait^^^> Set replace3=^^^<img src="data:image/png;base64, Set find4=^^^</portrait^^^> Set replace4=" /^^^> setlocal enabledelayedexpansion for /F "tokens=* usebackq" %%n in ("!infile!") do ( set LINE=%%n set LINE=!LINE:%find%=%replace%! set LINE=!LINE:%find2%=%replace2%! set LINE=!LINE:%find3%=%replace3%! set LINE=!LINE:%find4%=%replace4%! >>"5.txt" echo !LINE! )

gora
19-03-2013, 09:43
можно ли ускорить данный скрипт ? »
На cmd, вряд ли. Попробуйте на vbs:Set FSO = CreateObject("Scripting.FileSystemObject")
infile = "obr.xml"
outfile = "5.txt"
find1 = "<signature>"
replace1 = "<img src=""data:image/png;base64,"
find2 = "</signature>"
replace2 = """ />"
find3 = "<portrait>"
replace3 = "<img src=""data:image/png;base64,"
find4 = "</portrait>"
replace4 = """ />"

strt = Now

Set rd_file = FSO.OpenTextFile(infile, 1,, -2)
Buffer = rd_file.ReadAll
rd_file.Close
size1 = Len(Buffer)

Buffer = Replace(CStr(Buffer), find1, replace1, 1, -1, 1)
Buffer = Replace(CStr(Buffer), find2, replace2, 1, -1, 1)
Buffer = Replace(CStr(Buffer), find3, replace3, 1, -1, 1)
Buffer = Replace(CStr(Buffer), find4, replace4, 1, -1, 1)

Set wr_file = FSO.OpenTextFile(outfile, 2, True)
wr_file.Write Buffer
wr_file.Close
size2 = Len(Buffer)

fnsh = Now

MsgBox "Размер файла до - " & size1 & vbCr _
& "Размер файла после - " & size2 & vbCr _
& "Время работы - " & DateDiff("s",strt,fnsh) & " с", 64, "Замены произведены"
WScript.Quit
Файл в 3МБ у меня обрабатывает ~ 1с.

dark-------13
19-03-2013, 13:04
Спасибо большое уважаемый Gora, в очередной раз выручаете меня!

apozlevich
20-03-2013, 10:56
Оптимизировать bat, оптимизировать vbs... Если хотите скорость - пишите на C.




© OSzone.net 2001-2012