Автор Тема: Перехват данных из cmd и вывод в своё GUI или в txt  (Прочитано 2656 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн rpgeha [?]

  • Новичок
  • *
  • Сообщений: 11
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Всем привет. Есть программа - майнер "MinerGate-cli-4.04-win32", она запускается  бат файлом с указание параметров. Мне нужно как-то логировать её работу.

Это содержимое бат файла для запуска майнера.
minergate-cli.exe -user [email protected] -xmr 2
После запуска батника происходит запуск майнера, появляется консоль и далее в ней выводится информация. Информация выводится динамически, почти каждую секунду новая строка.

Как сделать так, чтобы то что выводится в cmd перенаправлялось в перемененную autoit или записывалось сразу в txt?

Пробовал реализовать при помощи таких команд:

Код: AutoIt [Выделить]
$MinerStart =  Run(@ComSpec & 'MinerGate-cli-4.04-win32.exe -user [email protected] -xmr 2','' , @SW_HIDE, $STDERR_MERGED)
ConsoleWrite(StdoutRead($MinerStart))
 


StdoutRead почему-то возвращает - ничего. Весь день пробую различные вариации, но никак не могу выхватить этот текст из cmd(

Нашел код на форуме с похожей проблемой и тоже про майнер, пробовал через него перехватить, но все равно тщетно.
(нажмите для показа/скрытия)

В чем может быть проблема, что читать, где копать? Подскажите пожалуйста

Русское сообщество AutoIt

Перехват данных из cmd и вывод в своё GUI или в txt
« Отправлен: Июнь 18, 2017, 20:12:59 »

Оффлайн Vovsla [?]

  • Осваивающий
  • **
  • Сообщений: 546
  • Репутация: 26
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Попробуй так

Код: AutoIt [Выделить]
    $STDOut=Run('MinerGate-cli-4.04-win32.exe -user [email protected] -xmr 2', '', @SW_HIDE, $STDOUT_CHILD)
    While 1
        $STDOutResult = StdoutRead($STDOut)
        If @error Then ExitLoop
        If $STDOutResult<>'' Then ConsoleWrite($STDOutResult&@CRLF)
    Wend
 


Оффлайн rpgeha [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Попробуй так

Код: AutoIt [Выделить]
    $STDOut=Run('MinerGate-cli-4.04-win32.exe -user [email protected] -xmr 2', '', @SW_HIDE, $STDOUT_CHILD)
    While 1
        $STDOutResult = StdoutRead($STDOut)
        If @error Then ExitLoop
        If $STDOutResult<>'' Then ConsoleWrite($STDOutResult&@CRLF)
    Wend
 


Результат - майнер запускается (в процессах начинает висеть), autoit скрипт висит в трее, но в консоли пусто, ничего не выводит.

">Exit code: 0    Time: 3.924"

Русское сообщество AutoIt

Re: Перехват данных из cmd и вывод в своё GUI или в txt
« Ответ #2 Отправлен: Июнь 18, 2017, 21:49:37 »

Оффлайн Vovsla [?]

  • Осваивающий
  • **
  • Сообщений: 546
  • Репутация: 26
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
попробуй с ComSpec
Код: AutoIt [Выделить]
@ComSpec & 'MinerGate-cli-4.04-win32.exe -user [email protected] -xmr 2'
 


Оффлайн rpgeha [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
попробуй с ComSpec
Код: AutoIt [Выделить]
@ComSpec & 'MinerGate-cli-4.04-win32.exe -user [email protected] -xmr 2'
 


С ComSpec скрипт вырубается сразу после запуска :think: Майнер не запускается даже..

Русское сообщество AutoIt

Re: Перехват данных из cmd и вывод в своё GUI или в txt
« Ответ #4 Отправлен: Июнь 18, 2017, 22:52:57 »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 4102
  • Репутация: 1089
    • Награды
  • Версия AutoIt: 3.3.14.0
rpgeha
Цитировать
записывалось сразу в txt
В папке со скриптом должен появиться файл log.txt
Код: AutoIt [Выделить]
Run(@ComSpec & ' /c minergate-cli.exe -user [email protected] -xmr 2 > log.txt', '', @SW_HIDE)


Оффлайн rpgeha [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
rpgeha
Цитировать
записывалось сразу в txt
В папке со скриптом должен появиться файл log.txt
Код: AutoIt [Выделить]
Run(@ComSpec & ' /c minergate-cli.exe -user [email protected] -xmr 2 > log.txt', '', @SW_HIDE)


Log.txt появляется, но он пустой. Ничего не пишется в нем. Вес 0 байт

Помечен как лучший ответ пользователем rpgeha Отправлен Декабрь 31, 2017, 02:00:25

Оффлайн winix [?]

  • Сообщений: 80
  • Репутация: -1
    • блог
    • Награды
  • Версия AutoIt: 3.3.12.0
Похоже проблема не решаема  в принципе, в линуксе её просто нет.
cmd не позволяет выводить на несколько устройств, причём вывод на экран динамический в реальном времени, а вывод в лог только по завершению процесса, который бесконечен.
Если вывод в лог в программе не прописан, то его и не сделать.

Возможно можно найти решения ковыряя исходники cmd от wine и reactos, вполне сгодится версия 32.
Можно попробовать задействовать какойто виндовый баш, но в отличии от линукса. у винды очень слабый функционал, и скорее всего фич линукса просто нет.

Копал тему ещё в году 2016, смотрю решений всё ещё нет.

Есть экзотические программы.
avrdude программа не бесконечного цикла, но с несколькими шагами.
В  процессе шага пишет полоску статуса в реальном времени и если зависнет это положение видно.
При выводе в лог, записывает только шагами, и полоску статуса пишет только как 100% при успешном прохождении или не пишет вообще если зависло гдето в середине.

dstm майнер, программа бесконечного цикла, при направлении в лог дописывает строки, но последовательно и как следствие не верно.
В реальном времени изменяет любые строки на экране, чего при выводе в лог сделать нельзя.
Но в этой программе автор сделал возможность вывода в лог и в этом файле как раз переписываются ранее написаные строки, получается как и на экране. Силами вендовой консоли подобное сделать нельзя.

Так что лучшее что можно сделать через скрипт это прикрепить кнопки к консольному окну
« Последнее редактирование: Декабрь 28, 2017, 20:24:16 от winix »

Русское сообщество AutoIt

Re: Перехват данных из cmd и вывод в своё GUI или в txt
« Ответ #7 Отправлен: Декабрь 28, 2017, 20:17:00 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
3226 Просмотров
Последний ответ Май 23, 2011, 16:39:23
от Sergey2210
1 Ответов
2099 Просмотров
Последний ответ Июнь 12, 2011, 12:07:51
от Medic84
5 Ответов
4707 Просмотров
Последний ответ Август 06, 2011, 01:29:30
от Kaster
7 Ответов
4650 Просмотров
Последний ответ Декабрь 08, 2011, 18:41:26
от madmasles
20 Ответов
6840 Просмотров
Последний ответ Июнь 15, 2013, 10:51:05
от prokazzza
20 Ответов
7132 Просмотров
Последний ответ Февраль 07, 2014, 12:14:51
от urrya
0 Ответов
1109 Просмотров
Последний ответ Сентябрь 07, 2016, 07:19:25
от atrade06
1 Ответов
1885 Просмотров
Последний ответ Сентябрь 09, 2016, 21:11:14
от Dessan
5 Ответов
1075 Просмотров
Последний ответ Май 14, 2017, 17:58:26
от Garrett
1 Ответов
465 Просмотров
Последний ответ Сентябрь 15, 2018, 12:53:49
от ra4o