Цитата boomdeamon:
Но именно так не заработало, но заработало вот так более топорно конечно я дописал, где каждый cmd содержит вызов своего гивера »
|
В общем, можно перейти на компромисс, гибрид cmd+powershell...
Примерно так:
1. Создаем новый батник
run_cuda_new.bat
run_cuda_new.bat
Код:

@echo off
for /F "tokens=*" %%I in (run_config.ini) do set %%I
set "LOG="
if "%USE_LOG%"=="Y" (
set "LOG=-l %LOG_FILE%"
)
title GPU %GPU_ID% CUDA log=%USE_LOG%
REM =======begin вставка 1=======
set "folder=.\1\"
set givers="kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN" "kf8SYc83pm5JkGt0p3TQRkuiM58O9Cr3waUtR9OoFq716lN-" "kf-FV4QTxLl-7Ct3E6MqOtMt-RGXMxi27g4I645lw6MTWraV" "kf_NSzfDJI1A3rOM0GQm7xsoUXHTgmdhN5-OrGD8uwL2JMvQ" "kf8gf1PQy4u2kURl-Gz4LbS29eaN4sVdrVQkPO-JL80VhOe6" "kf8kO6K6Qh6YM4ddjRYYlvVAK7IgyW8Zet-4ZvNrVsmQ4EOF" "kf-P_TOdwcCh0AXHhBpICDMxStxHenWdLCDLNH5QcNpwMHJ8" "kf91o4NNTryJ-Cw3sDGt9OTiafmETdVFUMvylQdFPoOxIsLm" "kf9iWhwk9GwAXjtwKG-vN7rmXT3hLIT23RBY6KhVaynRrIK7" "kf8JfFUEJhhpRW80_jqD7zzQteH6EBHOzxiOhygRhBdt4z2N"
for %%a in (%givers%) do set "giver=%%~a"&call :test
for /f "tokens=1,2 delims= " %%x in ('powershell -ex bypass .\script.ps1') do (
set GIVER_ADDR=%%x
)
REM =======end вставка 1=======
echo on
:_minerstart
tonlib-cuda-cli.exe -V
tonlib-cuda-cli.exe -v 3 -C %CONFIG_FILE% -e "pminer start %GIVER_ADDR% %MY_ADDR% %GPU_ID% %BOOST_FACTOR% %GPU_PLATFORM_ID%" %LOG%
goto _minerstart
pause&exit /b
REM =======begin вставка 2=======
:test
lite-client.exe -v 0 -C global.config.json -rc "runmethod %giver% get_pow_params" >"%folder%%giver%.txt"
REM =======end вставка 2=======
- отличается от оригинального вставленным кодом из двух частей (пометки на вставки есть)
Giver-ы записаны в переменную %Givers% (каждый отдельно, в двойных кавычках и друг от друга отделяются пробелом)
В процессе работы будет создан каталог "1" (имя можно изменить, но если менять, то и в батнике, и в скрипте powershell одновременно), в котором будут формироваться результаты работы тестирования
lite-client.exe, в текстовых файлах с именами Giver-ов.
2. Скрипт powershell
script.ps1 (сохранить лучше в UTF8 с BOM и разместить надо рядом с
run_cuda_new.bat):
script.ps1
Код:

$folder = '.\1'
$flt = '*.txt'
$arr=@()
(dir $folder -filter $flt -file|%{
$arr = (gc $_.fullname -enc utf8|
?{$_ -match 'remote result'}) -split " |\[|\]"|?{$_ -match '^\d+$'}
[pscustomobject]@{
Giver = $_.basename
Complex = [bigint]::parse($arr[1])
}
}|sort Complex -d|select -first 1|ft -hid|out-string).trim()
- в powershell анализируются результаты тестов Giver-ов, выбирается единственный по наибольшему значению:
Цитата boomdeamon:
Из всего это участка данных интересуют значения в строке, точнее сейчас именно одно значение, раньше больше значений нужно было, это второе значение в [] »
|
и передается назад в виде двух значений "
Giver Complex" в CMD, где уже происходит, собственно, дальнейший запуск tonlib-cuda-cli.exe (как в оригинальном батнике), но уже с новым, выбранным Giver-ом (c наибольшим Complex).
- Это если, конечно, я верно осмыслил задачу... если что не так, поправить можно легко...
PS Да, powershell должен быть v 5.1... на более старых версиях работоспособность не гарантируется.
