Аватар для Gezerg
4 / 4 / 2
Регистрация: 01.12.2012
Сообщений: 39

Присвоить переменной результат выполнения программы

07.01.2013, 10:02. Показов 95913. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Сразу говорю в bat сценариях я новичок))
У меня есть программа (написана на с++) maxnum.exe, которая ищет максимальное число из 5 введенных.
Я создал батник и записал в него такой код:
Bash
1
2
3
@echo off
    maxnum.exe 1 4 2 6 4
timeout /t 30
Запускаю свой батник и в командной строке выводится число 6. Так и должно быть. Но мне нужно чтоб это максимальное число записалось в переменную для дальнейшего использования.
Думал сделать так:
Bash
1
2
3
4
@echo off
    set result=maxnum.exe 1 4 2 6 4
    echo %result%
timeout /t 30
Но ничего не получается((
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.01.2013, 10:02
Ответы с готовыми решениями:

Присвоить переменной в качестве значения строку, выводимую в результате выполнения программы
День добрый, есть у меня вот такая заготовка скрипта В нем я через imageMagic вытягиваю размер картинки. identify должно выдать что-то...

Переменная вместо строки в команде FIND -> присвоить результат переменной
Доброго времени суток, уважаемые форумчане! Помогите, пжт, дописать bat-ник. Задача: на ежедневной основе необходимо производить...

Присвоить вывод программы переменной
Решил спросить здесь: Как сделать что бы выдаваемое значение zenity присваивалась переменной?

19
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5240 / 2114 / 416
Регистрация: 06.01.2013
Сообщений: 4,845
07.01.2013, 12:19
Bash
1
2
3
4
FOR /F "usebackq" %%a IN (`maxnum.exe 1 4 2 6 4`) DO (
 set result=%%a
)
echo %result%
И всё

Добавлено через 1 минуту
А почему сам maxnum не переделаешь под свои нужды?
0
 Аватар для Gezerg
4 / 4 / 2
Регистрация: 01.12.2012
Сообщений: 39
07.01.2013, 13:35  [ТС]
Спасибо за ответ у меня получилось))
Цитата Сообщение от FraidZZ Посмотреть сообщение
А почему сам maxnum не переделаешь под свои нужды?
Потому что у мне было дано такое задание))
А почему когда пишешь вот так:
Bash
1
2
3
4
5
@echo off
FOR /F "usebackq" %%a IN (`maxnum.exe 1 4 2 6 4`) DO (
 set result=%%a
echo %result%
)
то в командной строке выводится "Режим вывода команд на экран (ECHO) отключён."?
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5240 / 2114 / 416
Регистрация: 06.01.2013
Сообщений: 4,845
07.01.2013, 13:43
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Потому что программисты винды такие программисты. Если ты используешь переменную ВНУТРИ цикла или оператора "иф", то она берётся такой, как она была ПРИ ВХОДЕ В ЦИКЛ, а т.к. до цикла её не было, то вместо неё подставляется пустота и получается просто echo. Это называется "связывание времени подстановки" или както так.
Чтобы это не мешало, надо либо использовать переменные за циклом, или в начало батника впихнуть строку
Bash
1
"setlocal enabledelayedexpansion"
а вместо %result% использовать !result!:
Bash
1
2
3
4
5
6
@echo off
setlocal enabledelayedexpansion
FOR /F "usebackq" %%a IN (`maxnum.exe 1 4 2 6 4`) DO (
 set result=%%a
echo !result!
)
2
 Аватар для Gezerg
4 / 4 / 2
Регистрация: 01.12.2012
Сообщений: 39
07.01.2013, 13:55  [ТС]
Огромное спасибо))) Всё получилось!
0
1748 / 353 / 41
Регистрация: 15.10.2012
Сообщений: 550
07.01.2013, 14:32
Цитата Сообщение от FraidZZ Посмотреть сообщение
Потому что программисты винды такие программисты.
"Переменные" в командных файлах это не те переменные, как это понимается в других языках программирования. По сути - это _макроподстановки_. При построчной интерпретации, cmd считывает новую строку, раскрывает переменные, выполняет. Отсюда всякие удваивания, утраивания и т.д. знаков процента.
Фокус в том, что код в скобках () указывает cmd обработать не просто одну строку, а блок текста, возможно, состоящий из нескольких строк. Подстановка осуществляется, естественно, один раз.
2
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5240 / 2114 / 416
Регистрация: 06.01.2013
Сообщений: 4,845
07.01.2013, 14:37
Цитата Сообщение от Smitis Посмотреть сообщение
Подстановка осуществляется, естественно, один раз.
В самой строке, я это знаю. Но всё равно восхищаюсь ими, так как рациональнее было бы заменять это непосредственно при выполнении команды. Впрочем, setlocal enabledelayedexpansion всё решает
0
0 / 0 / 0
Регистрация: 06.04.2014
Сообщений: 6
03.02.2016, 16:32
А как быть если присвоить нужно из первой строки вывода?
Например вывод команды rasdial без параметров:
Code
1
2
3
Связь с
MyProvider
Команда успешно выполнена.
или
Code
1
2
Отсутствуют подключения
Команда успешно выполнена.
Хотелось бы получать слова "Связь" или "Отсутствуют" в переменную.
0
 Аватар для ComSpec
3461 / 1999 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
03.02.2016, 23:48
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Windows Batch file
1
2
3
4
5
6
7
@echo off
 
for /f %%i in ('"rasdial| (set/p x=& call echo %%x%%)"') do set var=%%i
 
echo.%var%
 
pause>nul
2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18024 / 7727 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
04.02.2016, 22:11
Или
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
SetLocal EnableExtensions
 
for /f %%i in ('rasdial') do set "var=%%i"& goto fin
:fin
 
echo.%var%
 
pause>nul
0
6 / 1 / 0
Регистрация: 24.12.2013
Сообщений: 5
14.04.2017, 15:11
FOR /F %%a IN (`maxnum.exe "1 4 2 6 4"`) DO set result=%%a
echo %result%

Параметры передаются через двойные ковычки.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18024 / 7727 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
15.04.2017, 14:23
legendik, для C++ уверен это неверный способ. Вы передаёте набор цифр как строку.
Правильный вариант уже был дан FraidZZ. Не поднимайте старые темы.
0
6 / 1 / 0
Регистрация: 24.12.2013
Сообщений: 5
10.05.2017, 09:13
Dragokas
к сожалению от FraidZZ не работает.
Есть программа которая в данном случае это maxnum.exe которая должна принимать параметры, передать параметры
в файле получилось только таким способом maxnum.exe "1 4 2 6 4"
Это не теория. Это практика с которой столкнулся.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18024 / 7727 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
10.05.2017, 17:54
Ну если только какая-то специфическая программа.
А для программы вида:
Цитата Сообщение от Gezerg Посмотреть сообщение
которая ищет максимальное число из 5 введенных.
можно сразу говорить о том, что её писал криворукий программист.

Вообще, во всех случаях читайте хелп на программу.
0
0 / 0 / 0
Регистрация: 30.10.2015
Сообщений: 2
02.10.2019, 16:41
а если два результата выводит , то как присвоить каждому переменную?
0
6666 / 2827 / 1087
Регистрация: 06.06.2017
Сообщений: 9,596
02.10.2019, 16:49
Подклеивать счётчик к имени переменной.
0
 Аватар для Electra2005
2 / 2 / 0
Регистрация: 10.01.2011
Сообщений: 85
24.12.2020, 17:02
И как сие сделать с результатом вывода api в curl?
0
6666 / 2827 / 1087
Регистрация: 06.06.2017
Сообщений: 9,596
24.12.2020, 17:44
Electra2005, какого "вывода" (ключа в параметр?) и что есть "сие"? К кому/чему вопрос? Связь какая с сабжем? Полный расклад уточнений в студию.
0
 Аватар для Electra2005
2 / 2 / 0
Регистрация: 10.01.2011
Сообщений: 85
24.12.2020, 21:09
Ну к примеру curl https://whattomine.com/coins/151.json
выдает результат в виде:
Code
1
{"id":151,"name":"Ethereum","tag":"ETH","algorithm":"Ethash","block_time":"13.3071","block_reward":2.74858076361654,"block_reward24":3.22496681451538,"block_reward3":2.965810887965993,"block_reward7":2.8386284391408227,"last_block":11517747,"difficulty":3.649228010774094e+15,"difficulty24":3.7136899810067e+15,"difficulty3":3.685968611318847e+15,"difficulty7":3.648970091276806e+15,"nethash":274231651582545,"exchange_rate":0.025368,"exchange_rate24":0.025274943977591,"exchange_rate3":0.026044026760091,"exchange_rate7":0.02703991464321363,"exchange_rate_vol":8741.27746054,"exchange_rate_curr":"BTC","market_cap":"$67,501,322,484","pool_fee":"0.000000","estimated_rewards":"0.005659","btc_revenue":"0.00014356","revenue":"$3.35","cost":"$1.01","profit":"$2.34","status":"Active","lagging":false,"testing":false,"listed":true,"timestamp":1608832106}
Ну жно выловить значение 151 из поля id и занести в переменную.
0
6666 / 2827 / 1087
Регистрация: 06.06.2017
Сообщений: 9,596
24.12.2020, 21:23
Windows Batch file
1
@for /f "tokens=2 delims=:," %%i in ('2^>nul curl https://whattomine.com/coins/151.json') do @set n=%%i
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.12.2020, 21:23
Помогаю со студенческими работами здесь

Как присвоить определенному полю БД значение переменной, вычесленной в ходе выполнения программы
У меня проблема с Fox Pro, подскажите пожалуйста как присвоить определенному полю базы данных значение переменной вычесленной в ходе...

Переменной d присвоить результат деления первого числа на второе, а переменной f - результат деления второго на первое
Даны два целых числа. Переменной d присвоить результат деления первого числа на второе число, а переменной f результат деления второго...

Переменно присвоить результат выполнения SQL скрипта
форумчане, с bash только начинаю знакомится. подскажите, в bash переменной могу присвоить результат SQL скрипта. переменная a ...

Результат выполнения программы в консоли пропадает после выполнения скрипта
нужно отпарсить файл , но мне надо видеть что выводит сценарий , иначе мне его неотладить. Запускаю файл вот так python index.py

Результат запроса присвоить переменной
Как? Извиняюсь сразу за ламерский вопрос но надо достаточно срочно. Селектом выбираем одно значение. Его надо присвоить переменной.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru