|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Необходимо из файла считать строку и участи строки присвоить переменным |
|
|
CMD/BAT - Необходимо из файла считать строку и участи строки присвоить переменным
|
Новый участник Сообщения: 9 |
Профиль | Отправить PM | Цитировать
Есть текстовый файл в котором есть строка
remote result (not to be trusted): [ 82074624499369902458868130586453554849 65228258370552867395165752861763116226784530337709001549878075 100000000000 256 ] необходимо для каждое числа, которое заключено в [ ] присвоить значение переменной, числа могут быть разной длины каждое a=82074624499369902458868130586453554849 b=65228258370552867395165752861763116226784530337709001549878075 c=100000000000 d=256 |
|
Отправлено: 22:38, 18-11-2021 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать YuS_2,
Цитата YuS_2:
boomdeamon, Вот вариант CMD. Вычистил от извращений из-за недомыслия в постановке.
Оставил за вами организацию промежуточного файла, хотя, ИМХО, можно бы было обойтись и без него. @Echo Off
cls
Set "KeyWord=remote result (not to be trusted):"
Set /A N=0
Call :@ kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN
Call :@ kf8SYc83pm5JkGt0p3TQRkuiM58O9Cr3waUtR9OoFq716lN-
Call :@ kf-FV4QTxLl-7Ct3E6MqOtMt-RGXMxi27g4I645lw6MTWraV
Call :@ kf_NSzfDJI1A3rOM0GQm7xsoUXHTgmdhN5-OrGD8uwL2JMvQ
Call :@ kf8gf1PQy4u2kURl-Gz4LbS29eaN4sVdrVQkPO-JL80VhOe6
Call :@ kf8kO6K6Qh6YM4ddjRYYlvVAK7IgyW8Zet-4ZvNrVsmQ4EOF
Call :@ kf-P_TOdwcCh0AXHhBpICDMxStxHenWdLCDLNH5QcNpwMHJ8
Call :@ kf91o4NNTryJ-Cw3sDGt9OTiafmETdVFUMvylQdFPoOxIsLm
Call :@ kf9iWhwk9GwAXjtwKG-vN7rmXT3hLIT23RBY6KhVaynRrIK7
Call :@ kf8JfFUEJhhpRW80_jqD7zzQteH6EBHOzxiOhygRhBdt4z2N
If %N%==0 (Echo !!! Данные не получены. &Exit /B 2)
Call :Giver
Echo. &Echo nBestGiver=%nBestGiver% &Echo MaxComplex=%MaxComplex% &Echo BestGiver =%BestGiver%
Pause
Exit /B
:@
Set "OutFile=%Tmp%\%~nx0.giver"
rem lite-client.exe -v 0 -C global.config.json -rc "runmethod %1 get_pow_params" >"%OutFile%"
>nul Copy "Z:\Box_In\%1" "%OutFile%"
Set "Complex="
For /F "usebackq tokens=2 delims=[]" %%s In (`2^>nul FINDSTR /I "%KeyWord%" "%OutFile%"`) Do Call :Out "a" "Complex" "c" "d" %%s
If "%Complex%"=="" (Echo !!! %1 не получены данные &Exit /B 2)
2>nul Del "%OutFile%"
Set /A N+=1
Set "NN=%N% "
Echo Giver%NN:~0,2% = %1
Call Set "Name=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000z%%Complex%%"
Call Set "Name=@@%%Name:~-120%%"
Call Set "%%Name%%=%1=%N%"
Exit /B
:Out
Set "%~1=%5" &Set "%~2=%6" &Set "%~3=%7" &Set "%~4=%8"
Exit /B
:Giver
Echo.
For /F "usebackq tokens=1,2,3 delims==" %%i In (`Set "@@"`) Do (
Set "nBestGiver=%%k"
Set "MaxComplex=%%i"
Call Set "MaxComplex=%%MaxComplex:*z=%%"
Call Set "Out= %%MaxComplex%%"
Set "NN= %%k"
Call Echo %%NN:~-2%% =%%Out:~-100%%
Set "BestGiver=%%j"
)
Exit /B
|
|
------- Отправлено: 16:36, 20-11-2021 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Подскажите возникла такая проблема, когда последовательно выполняются данные командники, то иногда происходит зависание и работа общего батника останавливается, как обработать исключение, например если 5 секунд нет ответа то переходить к выполнению следующей строки cmd ?
внутри командника такой код, для каждого со своими параметрами lite-client.exe -v 0 -C global.config.json -rc "runmethod kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN get_pow_params">kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN 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 |
Отправлено: 18:50, 20-11-2021 | #22 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать Цитата boomdeamon:
Вот вариант с запуском вашей процедуры (уточните, в чем отличаются параметры, возможно это уточнить при её вызове)
Введено время ожидания её завершения. По истечении этого времени она будет убита. @Echo Off cls Set "KeyWord=remote result (not to be trusted):" Set /A WaitSec=10 Set /A N=0 Call :@ kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN Call :@ kf8SYc83pm5JkGt0p3TQRkuiM58O9Cr3waUtR9OoFq716lN- Call :@ kf-FV4QTxLl-7Ct3E6MqOtMt-RGXMxi27g4I645lw6MTWraV Call :@ kf_NSzfDJI1A3rOM0GQm7xsoUXHTgmdhN5-OrGD8uwL2JMvQ Call :@ kf8gf1PQy4u2kURl-Gz4LbS29eaN4sVdrVQkPO-JL80VhOe6 Call :@ kf8kO6K6Qh6YM4ddjRYYlvVAK7IgyW8Zet-4ZvNrVsmQ4EOF Call :@ kf-P_TOdwcCh0AXHhBpICDMxStxHenWdLCDLNH5QcNpwMHJ8 Call :@ kf91o4NNTryJ-Cw3sDGt9OTiafmETdVFUMvylQdFPoOxIsLm Call :@ kf9iWhwk9GwAXjtwKG-vN7rmXT3hLIT23RBY6KhVaynRrIK7 Call :@ kf8JfFUEJhhpRW80_jqD7zzQteH6EBHOzxiOhygRhBdt4z2N If %N%==0 (Echo !!! Данные не получены. &Exit /B 2) Call :Giver Echo. &Echo nBestGiver=%nBestGiver% &Echo MaxComplex=%MaxComplex% &Echo BestGiver =%BestGiver% Pause Exit /B :@ Set "OutFile=%Tmp%\%~1" Call :Client %1 "%OutFile%" Set "Complex=" For /F "usebackq tokens=2 delims=[]" %%s In (`2^>nul FINDSTR /I "%KeyWord%" "%OutFile%"`) Do Call :Out "a" "Complex" "c" "d" %%s 2>nul Del "%OutFile%" If "%Complex%"=="" (Echo !!! %1 не получены данные &Exit /B 2) Set /A N+=1 Set "NN=%N% " Echo Giver%NN:~0,2% = %1 Call Set "Name=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000z%%Complex%%" Call Set "Name=@@%%Name:~-120%%" Call Set "%%Name%%=%1=%N%" Exit /B :Out Set "%~1=%5" &Set "%~2=%6" &Set "%~3=%7" &Set "%~4=%8" Exit /B :Giver Echo. For /F "usebackq tokens=1,2,3 delims==" %%i In (`Set "@@"`) Do ( Set "nBestGiver=%%k" Set "MaxComplex=%%i" Call Set "MaxComplex=%%MaxComplex:*z=%%" Call Set "Out= %%MaxComplex%%" Set "NN= %%k" Call Echo %%NN:~-2%% =%%Out:~-100%% Set "BestGiver=%%j" ) Exit /B :Client Set "Exe=lite-client.exe" rem Set "PathExe=Z:\Soft_In\WinSolit\" Set "PathExe=" Start " " "%PathExe%%Exe%" -v 0 -C global.config.json -rc "runmethod %1 get_pow_params" >%2 TimeOut /T %WaitSec% >nul 2>&1 TaskKill /IM "%Exe%" rem >nul Copy "Z:\Box_In\%1" %2 Exit /B |
|
------- Отправлено: 20:28, 20-11-2021 | #23 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать boomdeamon, сколько времени в норме отрабатывает программа lite-client.exe? Как идея: запускать эту утилиту 10 раз со своими настройками по очереди с некоторым интервалом, приблизительно равным среднему времени на отработку без ожидания завершения через START, каждая сохранит результат работы в свой файл, и, после всей этой десятки, после некоторого интервала, убить задачи, которые не успели отработать (зависли?)
Реализовано
@Echo Off
cls
Set "KeyWord=remote result (not to be trusted):"
Set /A WaitSec=5
Set /A WaitGlobalSec=20
Set "Exe=lite-client.exe"
Set "PathExe="
rem Set "PathExe=Z:\Soft_In\WinSolit\"
Set "OutDir=%Tmp%"
Set /A N=0, M=100
Call :@ kf-kkdY_B7p-77TLn2hUhM6QidWrrsl8FYWCIvBMpZKprBtN
Call :@ kf8SYc83pm5JkGt0p3TQRkuiM58O9Cr3waUtR9OoFq716lN-
Call :@ kf-FV4QTxLl-7Ct3E6MqOtMt-RGXMxi27g4I645lw6MTWraV
Call :@ kf_NSzfDJI1A3rOM0GQm7xsoUXHTgmdhN5-OrGD8uwL2JMvQ
Call :@ kf8gf1PQy4u2kURl-Gz4LbS29eaN4sVdrVQkPO-JL80VhOe6
Call :@ kf8kO6K6Qh6YM4ddjRYYlvVAK7IgyW8Zet-4ZvNrVsmQ4EOF
Call :@ kf-P_TOdwcCh0AXHhBpICDMxStxHenWdLCDLNH5QcNpwMHJ8
Call :@ kf91o4NNTryJ-Cw3sDGt9OTiafmETdVFUMvylQdFPoOxIsLm
Call :@ kf9iWhwk9GwAXjtwKG-vN7rmXT3hLIT23RBY6KhVaynRrIK7
Call :@ kf8JfFUEJhhpRW80_jqD7zzQteH6EBHOzxiOhygRhBdt4z2N
>nul TimeOut /T %WaitSec%
TaskList /fo csv |>nul Find /I "%Exe%" && (TimeOut /T %WaitGlobalSec% &>nul 2>&1 TaskKill /IM "%Exe%")
|
------- Последний раз редактировалось megaloman, 21-11-2021 в 19:23. Отправлено: 16:57, 21-11-2021 | #24 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|