PDA

Показать полную графическую версию : Необходимо из файла считать строку и участи строки присвоить переменным


Страниц : 1 [2]

megaloman
20-11-2021, 16:36
YuS_2, В общем, можно перейти на компромисс, гибрид cmd+powershell... »Одна голова хорошо, а две - уродство. :)
boomdeamon, @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=00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000z%%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
Естественно, я получаю данные в суррогатном отладочном варианте. В боевом варианте надо lite-client.exe -v 0 -C global.config.json -rc "runmethod %1 get_pow_params" >"%OutFile%"
rem >nul Copy "Z:\Box_In\%1" "%OutFile%"
Если всё же данные Вы получаете из другого CMD, я бы посоветовал его встроить в этот.

boomdeamon
20-11-2021, 18:50
Подскажите возникла такая проблема, когда последовательно выполняются данные командники, то иногда происходит зависание и работа общего батника останавливается, как обработать исключение, например если 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

megaloman
20-11-2021, 20:28
внутри командника такой код, для каждого со своими параметрами » В чём разные параметры? Только в имени "гивера" ?@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=00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000z%%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
Тестировал на имитации ваших процессов

megaloman
21-11-2021, 16:57
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%")

rem For /F "usebackq tokens=2 delims==" %%g In (`Set "Giver@"`) Do >nul Copy "Z:\Box_In\%%g" "%OutDir%\"
For /F "usebackq tokens=2 delims==" %%g In (`Set "Giver@"`) Do Call :@1 %%g

If %N%==0 (Echo !!! Данные не получены. &Exit /B 2)

Call :Giver

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

:@1
Set "Complex="
For /F "usebackq tokens=2 delims=[]" %%s In (`2^>nul FINDSTR /I "%KeyWord%" "%OutDir%\%~1"`) Do Call :Out "a" "Complex" "c" "d" %%s
2>nul Del "%OutDir%\%~1"

If "%Complex%"=="" (Echo !!! %1 не получены данные &Exit /B 2)

Set /A N+=1
Set "NN=%N% "
Echo Giver%NN:~0,2% = %1

Call Set "Name=00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000z%%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

:@
Set /A M+=1
Set "Giver@%M%=%~1"

Start " " "%PathExe%%Exe%" -v 0 -C global.config.json -rc "runmethod %1 get_pow_params" >"%OutDir%\%1"
>nul TimeOut /T %WaitSec%
Exit /B




© OSzone.net 2001-2012