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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Необходимо из файла считать строку и участи строки присвоить переменным

Ответить
Настройки темы
CMD/BAT - Необходимо из файла считать строку и участи строки присвоить переменным

Новый участник


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

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


Вложения
Тип файла: txt test.txt
(160 байт, 19 просмотров)
Тип файла: txt dirlist.txt
(170 байт, 19 просмотров)
Есть текстовый файл в котором есть строка
remote result (not to be trusted): [ 82074624499369902458868130586453554849 65228258370552867395165752861763116226784530337709001549878075 100000000000 256 ]
необходимо для каждое числа, которое заключено в [ ] присвоить значение переменной, числа могут быть разной длины каждое
a=82074624499369902458868130586453554849
b=65228258370552867395165752861763116226784530337709001549878075
c=100000000000
d=256

Отправлено: 22:38, 18-11-2021

 

Новый участник


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

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


Цитата YuS_2:
ЗЫ И как, майнинг - доходное дело? Получается что-то намайнить? »
да один раз удалось поймать вознаграждение за 25 дней и да получилось выгодно, но если бы не пошло то были бы сильные убытки, конкретно этот майнинг сильная лотерея, есть со стабильным небольшим доходом, а тут возможность выловить рыбку в мутной воде, особенно сейчас когда в начале ноября появился майнинг на винде, до этого он был на убунту(на убунту кстати выбор гивера реализован был, на винду его не перенесли разрабы) и сложность сети была в 5 раз легче, но набежало сейчас много народу, каждый хочет либо удачу за хвост поймать на слабом железе, либо кто то приходит на серьезном железе и гребет, но тоже с элементом удачи, так как каждая видеокарта делает расчет в соло и пулов нет и как говорят админы не будет. Так что днем работаю под виндой, а после работы переключаю на убунту, где есть выбор лучшего гивера

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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата boomdeamon:
реализовать не получилось, первое узнать длину строки и выбирать из них с большей длиной, если строк больше одной, то выбирать ту у которой первая цифра больше »
Как вариант, конечно, можно и так... т.е. если длина больше, то и число больше. Если же длина одинаковая, то сравнивать посимвольно от первой цифры... это тоже не проблема организовать и даже будет работать...
Вот, только реализовывать - мне лично, лень вспоминать CMD, ибо с powershell-ом всё гораздо проще решается, а cmd фактически уже не пользуюсь и многое позабылось...
Но возможно, кому-нибудь захочется это реализовать... просто подождать надо.

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


Отправлено: 14:34, 19-11-2021 | #12


Новый участник


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

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


Да я согласен и на powershell если на нем задача целиком решается

Отправлено: 14:35, 19-11-2021 | #13


Ветеран


Contributor


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

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


Вложения
Тип файла: rar giver.rar
(5.8 Kb, 17 просмотров)

YuS_2, boomdeamon,
Цитата YuS_2:
Вот тут и вступит ограничение CMD, в числовых значениях, ибо сравнить их не получится, а сравнение литеральных значений чисел приведет к неожиданным результатам. »
ИМХО, предсказуемым. Строки, ИМХО, сравниваются слева направо, поэтому "624" >"1074573547578" так как "6">"1"
Поэтому извратимся: приделаем к началу цифровой строки для удобства обозначения границы буковку, например, z (потом пригодится для усекновения лишнего) и, допустим, 120 нулей.
Далее, отрежем от конца 120 символов, приделаем к этой строке префикс, например, @@, получим набор одинаковых по длине строк, и сделаем финт: используем эту строку как имя переменной, присвоим ей номер гивера.
Получим (в сокращенном виде, длинную строку лень рисовать) нечто подобное @@0000000z123454=4
Далее Set "@@" выдаст номера гиверов в порядке возрастания их строковых значений, а вычленить из имени переменной гивер (помним о буковке z) не составляет труда.
Код: Выделить весь код
@Echo Off
cls
	Set "KeyWord=remote result (not to be trusted):"

	Set "Prefix=Giver"
	Set "Giver0=kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN"
	Set "Giver1=kf8SYc83pm5JkGt0p3TQRkuiM58O9Cr3waUtR9OoFq716lN-"
	Set "Giver2=kf-FV4QTxLl-7Ct3E6MqOtMt-RGXMxi27g4I645lw6MTWraV"
	Set "Giver3=kf_NSzfDJI1A3rOM0GQm7xsoUXHTgmdhN5-OrGD8uwL2JMvQ"
	Set "Giver4=kf8gf1PQy4u2kURl-Gz4LbS29eaN4sVdrVQkPO-JL80VhOe6"
	Set "Giver5=kf8kO6K6Qh6YM4ddjRYYlvVAK7IgyW8Zet-4ZvNrVsmQ4EOF"
	Set "Giver6=kf-P_TOdwcCh0AXHhBpICDMxStxHenWdLCDLNH5QcNpwMHJ8"
	Set "Giver7=kf91o4NNTryJ-Cw3sDGt9OTiafmETdVFUMvylQdFPoOxIsLm"
	Set "Giver8=kf9iWhwk9GwAXjtwKG-vN7rmXT3hLIT23RBY6KhVaynRrIK7"
	Set "Giver9=kf8JfFUEJhhpRW80_jqD7zzQteH6EBHOzxiOhygRhBdt4z2N"

	For /L %%i In (0,1,9) Do (
		For /F "usebackq tokens=2 delims=[]" %%s In (`2^>nul Call More  "Z:\Box_In\%%%Prefix%%%i%%" ^| FINDSTR /I "%KeyWord%"`) Do Call :Out "a" "Complex" "c" "d"  %%s
rem		For /F "usebackq tokens=2 delims=[]" %%s In (`2^>nul Call lite-client.exe -v 0 -C global.config.json -rc "runmethod %%%Prefix%%%i%% get_pow_params" ^| FINDSTR /I "%KeyWord%"`) Do Call :Out "a" "Complex" "c" "d"

		Call Set "Name=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000z%%Complex%%"
		Call Set "Name=@@%%Name:~-120%%"
		Call Set "%%Name%%=%%i"
	)

	For /F "usebackq tokens=1,2 delims==" %%i In (`Set "@@"`) Do (
		Set "nBestGiver=%%j"
		Set "BestGiver=%%i"
		Call Set "BestGiver=%%BestGiver:*z=%%"
		Call Set "Out=                                                                                       %%BestGiver%%"
		Call Echo %%j=%%Out:~-100%%
	)
Echo. &Echo nBestGiver=%Prefix%%nBestGiver%  &Echo MaxComplex=%BestGiver% &Call Echo BestGiver =%%%Prefix%%nBestGiver%%%  

Pause
Exit /B

:Out
	Set "%~1=%5" &Set "%~2=%6" &Set "%~3=%7" &Set "%~4=%8"
Exit /B
Естественно, отладить задачу целиком не могу, нет программ, на которые ссылается заказчик. Но создание файлов в боевом варианте (эта строка заремлена) не предполагается.
Для отладки применил обходной маневр: создал 10 файлов с именами совпадающими с гиверами (не знаю, что это такое и вряд ли захочу узнать), как указано у заказчика, в которых записал содержимое, которое, как я понял, выдаёт программа lite-client.exe. И вместо этой программы стандартным морем выдаю содержимое для обработки (в красной отладочной строке). Естественно, данные слегка изменил, чтобы иметь возможность для сортировки.
Набор этих отладочных файлов прилагаю - вдруг кто-то захочет попробовать, только путь надо будет вместо Z:\Box_In свой прописать)
В принципе, вся задача, которая сводится к сортировке длинных цифровых строк, в CMD решается.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 19-11-2021 в 23:27.

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

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


Новый участник


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

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


Цитата megaloman:
Естественно, отладить задачу целиком не могу, нет программ, на которые ссылается заказчик. Но создание файлов в боевом варианте (эта строка заремлена) не предполагается.
Для отладки применил обходной маневр: создал 10 файлов с именами совпадающими с гиверами (не знаю, что это такое и вряд ли захочу узнать), как указано у заказчика, в которых записал содержимое, которое, как я понял, выдаёт программа lite-client.exe. И вместо этой программы стандартным морем выдаю содержимое для обработки (в красной отладочной строке). Естественно, данные слегка изменил, чтобы иметь возможность для сортировки.
Набор этих отладочных файлов прилагаю - вдруг кто-то захочет попробовать, только путь надо будет вместо Z:\Box_In свой прописать)
В принципе, вся задача, которая сводится к сортировке длинных цифровых строк, в CMD решается. »
Да решение для анализа строки интересное, мне понравилось, супер.

К сожалению не заработал скрипт и думаю проблема в том что из-за перенаправлений ввода и вывода lite-client.exe не успевает отдать весь фрагмент вывода и видимо в данном случае нужно использовать вывод в отдельный временный файл,
For /F "usebackq tokens=2 delims=[]" %%s In (lite-client.exe -v 0 -C global.config.json -rc "runmethod %%%Prefix%%%i%% get_pow_params" >%file%)

а потом уже это файл парсить как в примере, так как пример именно с файлом да отлично справляется, когда фрагмент в файле.
А по результату работы примера, да пример вычисляется, только BestGiver это должно быть одно из значений одного из десяти гиверов, а в примере туда подставляется наибольший Complex, а необходимо значение лучшего гивера
сейчас скрипт выдает значения по тестовым данным
nBestGiver=Giver5 BestGiver=363407965974365185119488504750453864583808513014607073315407340
а надо
nBestGiver=Giver5 Complex=363407965974365185119488504750453864583808513014607073315407340 BestGiver=kf8kO6K6Qh6YM4ddjRYYlvVAK7IgyW8Zet-4ZvNrVsmQ4EOF

Последний раз редактировалось boomdeamon, 19-11-2021 в 22:54.


Отправлено: 22:45, 19-11-2021 | #15


Ветеран


Contributor


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

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


Цитата boomdeamon:
а надо
nBestGiver=Giver5
Complex=363407965974365185119488504750453864583808513014607073315407340
BestGiver=kf8kO6K6Qh6YM4ddjRYYlvVAK7IgyW8Zet-4ZvNrVsmQ4EOF »
- исправил.
Хотелось бы разобраться, почему К сожалению не заработал скрипт и не думаю что проблема из-за перенаправлений ввода и вывода, но надо больше информации.
Я иду у Вас на поводу и выделяю формирование файлов отдельно.
Код: Выделить весь код
@Echo Off
cls
	Set "BoxOut=Z:\Box_Out"

	Set "Prefix=Giver"
	Set "Giver0=kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN"
	Set "Giver1=kf8SYc83pm5JkGt0p3TQRkuiM58O9Cr3waUtR9OoFq716lN-"
	Set "Giver2=kf-FV4QTxLl-7Ct3E6MqOtMt-RGXMxi27g4I645lw6MTWraV"
	Set "Giver3=kf_NSzfDJI1A3rOM0GQm7xsoUXHTgmdhN5-OrGD8uwL2JMvQ"
	Set "Giver4=kf8gf1PQy4u2kURl-Gz4LbS29eaN4sVdrVQkPO-JL80VhOe6"
	Set "Giver5=kf8kO6K6Qh6YM4ddjRYYlvVAK7IgyW8Zet-4ZvNrVsmQ4EOF"
	Set "Giver6=kf-P_TOdwcCh0AXHhBpICDMxStxHenWdLCDLNH5QcNpwMHJ8"
	Set "Giver7=kf91o4NNTryJ-Cw3sDGt9OTiafmETdVFUMvylQdFPoOxIsLm"
	Set "Giver8=kf9iWhwk9GwAXjtwKG-vN7rmXT3hLIT23RBY6KhVaynRrIK7"
	Set "Giver9=kf8JfFUEJhhpRW80_jqD7zzQteH6EBHOzxiOhygRhBdt4z2N"

	Set "KeyWord=remote result (not to be trusted):"

	For /L %%i In (0,1,9) Do (
		Call :Giver "%BoxOut%" "%%%Prefix%%%i%%" 
		>nul Call Copy "Z:\Box_In\%%%Prefix%%%i%%" "%BoxOut%\"
	)

	For /L %%i In (0,1,9) Do (
		For /F "usebackq tokens=2 delims=[]" %%s In (`2^>nul Call More  "%BoxOut%\%%%Prefix%%%i%%" ^| FINDSTR /I "%KeyWord%"`) Do Call :Out "a" "Complex" "c" "d"  %%s

		Call Set "Name=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000z%%Complex%%"
		Call Set "Name=@@%%Name:~-120%%"
		Call Set "%%Name%%=%%i"
	)

	For /F "usebackq tokens=1,2 delims==" %%i In (`Set "@@"`) Do (
		Set "nBestGiver=%%j"
		Set "BestGiver=%%i"
		Call Set "BestGiver=%%BestGiver:*z=%%"
		Call Set "Out=                                                                                       %%BestGiver%%"
		Call Echo %%j=%%Out:~-100%%
	)
Echo. &Echo nBestGiver=%Prefix%%nBestGiver%  &Echo MaxComplex=%BestGiver% &Call Echo BestGiver =%%%Prefix%%nBestGiver%%%  
Pause
Exit /B

:Out
	Set "%~1=%5" &Set "%~2=%6" &Set "%~3=%7" &Set "%~4=%8"
Exit /B

:Giver
	2>nul Del "%~1\%~2"
	Echo lite-client.exe -v 0 -C global.config.json -rc "runmethod %~2 get_pow_params"
	 2>nul >>"%~1\%~2" lite-client.exe -v 0 -C global.config.json -rc "runmethod %~2 get_pow_params"
Exit /B
Строка, выделенная красным - отладочная. И отладочные файлы всё те же. Её надо убрать при боевой работе, она будет мешать. Путь, указанный в Set "BoxOut=Z:\Box_Out" пропишите свой, там будут писаться файлы

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 20-11-2021 в 00:28.

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

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


Новый участник


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

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


Цитата megaloman:
- исправил. »
Но именно так не заработало, но заработало вот так более топорно конечно я дописал, где каждый cmd содержит вызов своего гивера
lite-client.exe -v 0 -C global.config.json -rc "runmethod kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN get_pow_params">kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN

@Echo Off
cls
Set "KeyWord=remote result (not to be trusted):"

Set "Prefix=Giver"
Set "Giver0=kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN"
Set "Giver1=kf8SYc83pm5JkGt0p3TQRkuiM58O9Cr3waUtR9OoFq716lN-"
Set "Giver2=kf-FV4QTxLl-7Ct3E6MqOtMt-RGXMxi27g4I645lw6MTWraV"
Set "Giver3=kf_NSzfDJI1A3rOM0GQm7xsoUXHTgmdhN5-OrGD8uwL2JMvQ"
Set "Giver4=kf8gf1PQy4u2kURl-Gz4LbS29eaN4sVdrVQkPO-JL80VhOe6"
Set "Giver5=kf8kO6K6Qh6YM4ddjRYYlvVAK7IgyW8Zet-4ZvNrVsmQ4EOF"
Set "Giver6=kf-P_TOdwcCh0AXHhBpICDMxStxHenWdLCDLNH5QcNpwMHJ8"
Set "Giver7=kf91o4NNTryJ-Cw3sDGt9OTiafmETdVFUMvylQdFPoOxIsLm"
Set "Giver8=kf9iWhwk9GwAXjtwKG-vN7rmXT3hLIT23RBY6KhVaynRrIK7"
Set "Giver9=kf8JfFUEJhhpRW80_jqD7zzQteH6EBHOzxiOhygRhBdt4z2N"


call kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN.cmd
call kf8SYc83pm5JkGt0p3TQRkuiM58O9Cr3waUtR9OoFq716lN-.cmd
call kf-FV4QTxLl-7Ct3E6MqOtMt-RGXMxi27g4I645lw6MTWraV.cmd
call kf_NSzfDJI1A3rOM0GQm7xsoUXHTgmdhN5-OrGD8uwL2JMvQ.cmd
call kf8gf1PQy4u2kURl-Gz4LbS29eaN4sVdrVQkPO-JL80VhOe6.cmd
call kf8kO6K6Qh6YM4ddjRYYlvVAK7IgyW8Zet-4ZvNrVsmQ4EOF.cmd
call kf-P_TOdwcCh0AXHhBpICDMxStxHenWdLCDLNH5QcNpwMHJ8.cmd
call kf91o4NNTryJ-Cw3sDGt9OTiafmETdVFUMvylQdFPoOxIsLm.cmd
call kf9iWhwk9GwAXjtwKG-vN7rmXT3hLIT23RBY6KhVaynRrIK7.cmd
call kf8JfFUEJhhpRW80_jqD7zzQteH6EBHOzxiOhygRhBdt4z2N.cmd

For /L %%i In (0,1,9) Do (
For /F "usebackq tokens=2 delims=[]" %%s In (`2^>nul Call More "%%%Prefix%%%i%%" ^| FINDSTR /I "%KeyWord%"`) Do Call :Out "a" "Complex" "c" "d" %%s

Call Set "Name=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000z%%Complex%%"
Call Set "Name=@@%%Name:~-120%%"
Call Set "%%Name%%=%%i"
)

For /F "usebackq tokens=1,2 delims==" %%i In (`Set "@@"`) Do (
Set "nBestGiver=%%j"
Set "BestGiver=%%i"
Call Set "BestGiver=%%BestGiver:*z=%%"
Call Set "Out= %%BestGiver%%"
Call Echo %%j=%%Out:~-100%%
)


Echo. &Echo nBestGiver=%Prefix%%nBestGiver% &Echo MaxComplex=%BestGiver% &Call Echo BestGiver=%%%Prefix%%nBestGiver%%%
Pause
Exit /B

:Out
Set "%~1=%5" &Set "%~2=%6" &Set "%~3=%7" &Set "%~4=%8"
Exit /B

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


Ветеран


Contributor


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

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


boomdeamon, не знаю, что в ваших CMD, явно будет удобнее, чтобы не рисовать одно и то же дважды:
Код: Выделить весь код
Call %Giver0%.cmd
Call %Giver1%.cmd
Call %Giver2%.cmd
Call %Giver3%.cmd
Call %Giver4%.cmd
Call %Giver5%.cmd
Call %Giver6%.cmd
Call %Giver7%.cmd
Call %Giver8%.cmd
Call %Giver9%.cmd

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 20-11-2021 в 01:11.

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

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


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата megaloman:
ИМХО, предсказуемым. »
по сути, да, предсказуемо не с тем результатом, который хотелось бы получать, ибо сравнение строк (пусть и с цифровыми литералами) на больше-меньше, должно происходить не на уровне посимвольного сравнения, с результатом операции по первым символам, а как минимум, на длину строки... но, увы, это ведь cmd...
Цитата megaloman:
вычленить из имени переменной гивер (помним о буковке z) не составляет труда. »
Отвык я составлять подобные алгоритмы... лучше таки powershell применять - и проще, и понятнее, и гораздо гибче...

В общем:
boomdeamon, если не выйдет соорудить код на CMD, то попробуем на powershell.
Не хочется вникать в сам майнинг и запускать эти программы у себя, но чтобы написать код, необходимо тестировать сами программы и проверять, что у них на выходе... в крайнем случае, можно будет через внешний файл работать.

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

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

Отправлено: 08:22, 20-11-2021 | #19


Аватара для 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Необходимо из файла считать строку и участи строки присвоить переменным

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - CMD - читаю из файла, если первый символ строки =*, то вывести на экран строку jester7 Скриптовые языки администрирования Windows 16 11-04-2022 13:52
PowerShell - Разложить строку по переменным. garm Скриптовые языки администрирования Windows 8 14-10-2020 12:18
CMD/BAT - Слова вводимые пользователем разбить на части и присвоить переменным zerdox@vk Скриптовые языки администрирования Windows 20 03-08-2019 18:30
CMD/BAT - [решено] Присвоить переменным значения имен файлов в папке kopbetby Скриптовые языки администрирования Windows 5 10-10-2016 14:26
VBS/WSH/JS - Считать переменную из файла Udar_Nick Скриптовые языки администрирования Windows 17 30-06-2016 12:14




 
Переход