Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Autorun 
Author Message
AkulaBig



PostPosted: Fri May 08, 2026 11:18    Post subject: Reply with quote

В общем вот полностью рабочее решение:
Code:

Func ET(FileName, FieldIndex, UnitIndex)
   If StrPos(FileGetAttr(FileName), "D") Then Return

   Local ExifToolPID = 0, ExifToolOut = TEMP & "\exiftool_out.txt", ExifToolArgs = TEMP & "\exiftool_args.txt"

   ExifToolPID = ProcessGetId("exiftool.exe")
   If ExifToolPID = 0 Then
      FileWrite(ExifToolArgs, "", "UTF-8 NOBOM")
      ShellExec /TT /SW_HIDE %util_ET% "-stay_open True -@ ""%ExifToolArgs%"""
   EndIf

   ShellExec /SW_HIDE /WAIT %COMSPEC% "/c break > ""%ExifToolOut%"""

   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)

   # ждем, пока ExifTool создаст файл (цикл ожидания)
   Local WaitCount = 0
   While Not FileExist("%ExifToolOut%")
      Sleep 50
      WaitCount = WaitCount + 1
      ansi = FileRead(ExifToolOut)
      if WaitCount > 50 then Break
   Wend

   Return ansi
EndFunc

Никакого интереса оно не представляет. Я и без -stay_open так могу. Зато теперь все понятно. Проблема Ауторан в том, что он почему-то выводит данные не для каждого файла, а для всех сразу. Поэтому идет задержка для всех файлов, а потом данные выводятся мгновенно.
Время ожидания задается кодом ожидания. Если его убрать, данные выводятся сразу, но пустыми. Пришлось поставить 2,5 сек, чтобы все данные прочитались. Ну и обратите внимание на мелочи. /WAIT ставить обязательно. Оно никак не влияет на первоначальную задержку. Break отлично работает. Нет файла, создает его. Есть файл, очищает его. Преимущество в том, что не надо делать проверку и код сокращается до одной строки.
Осталось только проверить работу с au3. Вдруг там что-то -stay_open изменит.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group