Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

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

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


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

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


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

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

 

Ветеран


Contributor


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

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


YuS_2,
Цитата YuS_2:
В общем, можно перейти на компромисс, гибрид cmd+powershell... »
Одна голова хорошо, а две - уродство.
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
Естественно, я получаю данные в суррогатном отладочном варианте. В боевом варианте надо
Код: Выделить весь код
	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, я бы посоветовал его встроить в этот.

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

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

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



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

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


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


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

Профиль | Отправить 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


Ветеран


Contributor


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

Профиль | Отправить 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


Ветеран


Contributor


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

Профиль | Отправить 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%")

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=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

:@
	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

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


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

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

Отправлено: 16:57, 21-11-2021 | #24



Компьютерный форум 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




 
Переход