AkulaBig
|
Posted: Wed May 06, 2026 22:48 Post subject: |
|
|
| Orion9 wrote: | | Скорость - космос. |
Наконец-то дошли руки до тестирования. Идея стала понятна. Только воплотить пока не удается. Вот накропал код на основе вашего:
| Code: |
Func ET1(FileName, FieldIndex, UnitIndex)
Local ExifToolPID = 0, ExifToolOut = TEMP & "\exiftool_out.txt", ExifToolArgs = TEMP & "\exiftool_args.txt"
If StrPos(FileGetAttr(FileName), "D") Then Return
ExifToolPID = ProcessGetId("exiftool.exe")
If ExifToolPID = 0 Then
FileWrite(ExifToolArgs, "", "UTF-8 NOBOM")
ShellExec /TT /SW_HIDE %util_ET% "-stay_open True -@ ""%ExifToolArgs%"""
EndIf
If FileExist(ExifToolOut) Then
ShellExec /SW_HIDE %COMSPEC% '/c del /f /q "%gExifOut%"'
EndIf
Local sArgs = "-f" & auCRLF & _
"-s3" & auCRLF & _
"-m" & auCRLF & _
"-q" & auCRLF & _
"-q" & auCRLF & _
"-Title" & auCRLF & _
"-W+!" & auCRLF & ExifToolOut & auCRLF & FileName & auCRLF & "-execute" & auCRLF
Local obj = BinaryFile(ExifToolArgs, "a")
obj.WriteStr(sArgs, "", "UTF-8")
Free(obj)
ansi = "<time-out>"
For i = 1 To 50
If FileExist(ExifToolOut) Then
ansi = FileRead(ExifToolOut)
ShellExec /SW_HIDE %COMSPEC% '/c del /f /q "%ExifToolOut%"'
Break
EndIf
Sleep(20) # time-out
Next
Return ansi
EndFunc
|
Пока без всяких преобразований кривой кодировки. Только код вывода данных. Вывожу только одно поле Title. Работает также медленно, но это из-за того что здесь я применил ваш код задержки чтения из временного файла. Если убрать ненужные задержки скорость норм. Но вот беда. Вывод получается вот таким:
Слева как должно быть, справа как получается. Сначала я подумал, что кривой код. Но похоже код не успевает отработать. Ваша подсказка работает только для одного файла. А когда надо много обработать, вот такая фигня получается.
Может у вас есть какие-то идеи? |
|