Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


Цитата 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... на более старых версиях работоспособность не гарантируется.

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:00, 20-11-2021 | #20