Войти

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


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

Mancoffee
22-01-2025, 10:56
Есть скрипт для скачивания последнего релиза с github

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

REM Specify the target repository
SET github_user=mhogomchungu
SET github_repo=sirikali

REM If you just want a specific version: specify a unique part of the file name
REM If you want to download all available assets: Delete after `=`
SET target_zip=SiriKaliQt6-1.8.0.setup.exe
SET target_exe=SiriKaliQt6-1.8.0.zip

FOR /f "tokens=1,* delims=:" %%A IN ('curl -ks https://api.github.com/repos/%github_user%/%github_repo%/releases/latest ^| findstr "browser_download_url"') DO (
SET url=%%B
IF NOT "!url:%target_zip%=!"=="!url!" (
ECHO Downloading !url!
curl -kOL !url!
)
)
FOR /f "tokens=1,* delims=:" %%A IN ('curl -ks https://api.github.com/repos/%github_user%/%github_repo%/releases/latest ^| findstr "browser_download_url"') DO (
SET url=%%B
IF NOT "!url:%target_exe%=!"=="!url!" (
ECHO Downloading !url!
curl -kOL !url!
)
)

Проблем с другими не было, потому что мне было достаточно указать конец называния релиза, например x86-64.tar|zip|и т.д., а теперь мне нужно указать начало, в данном случае SiriKaliQt6 (потому что там есть и SiriKaliQt5) и конец setup.exe|zip. То есть мне нужно посредине вставить tag_name или name из вывода curl, который выдаёт из api github.
Как это сделать попроще?

NickM
22-01-2025, 13:23
Что-то типа такого:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

REM Specify the target repository
SET "github_user=mhogomchungu"
SET "github_repo=sirikali"
SET "packagename=SiriKaliQt"
SET "packagever=5"

REM setup.exe
FOR /f "tokens=1,* delims=:" %%A IN ('curl -ks https://api.github.com/repos/%github_user%/%github_repo%/releases/latest ^| findstr "browser_download_url" ^| findstr "%packagename%%packagever%" ^| findstr ".exe" ^| findstr /v ".asc"') DO (
echo.%%B
)

SQLai Lama
25-01-2025, 19:40
curl -ks https://api.github.com/repos/mhogomchungu/sirikali/releases/latest | yq -o=json ".assets[].browser_download_url|select(. == \"*Qt6*.exe\")"

DJ Mogarych
25-01-2025, 21:11
FOR /F "delims=" %%a IN ('powershell -c "(curl.exe -ks https://api.github.com/repos/mhogomchungu/sirikali/releases/latest |ConvertFrom-Json).assets.browser_download_url -match 'qt6.*exe$'"') DO @set "var=%%a"

curl.exe -kOL %var%

SQLai Lama
26-01-2025, 16:07
DJ Mogarych, есть ли смысл в curl при использовании powershell? Лучше, пожалуй, так:
((iwr https://api.github.com/repos/mhogomchungu/sirikali/releases/latest).Content | convertfrom-json).assets.browser_download_url -match 'qt6.*exe$'

DJ Mogarych
26-01-2025, 18:54
Автору потребен cmd/bat. Понятно, что лично я бы такое не использовал.
А curl.exe входит в стандартную поставку Windows уже лет 10.

SQLai Lama
26-01-2025, 19:16
DJ Mogarych, да будь даже curl не штатным, речь то в конечном итоге о powershell. И да, странно, что даже спустя ~19 лет после выхода первой версии powershell, люди напирают на cmd\bat, ограниченные кодировками и прочими условностями, в том числе выводом значения выражения в переменную. Тот же Tcl умел писать в переменную на заре MS-DOS. Что сейчас не так?

DJ Mogarych
26-01-2025, 19:35
Я раньше пытался убеждать кого-то, а потом перестал. Нравится людям - на здоровье.
А curl.exe порой бывает удобнее, чем iwr.

YuS_2
26-01-2025, 19:40
Я раньше пытался убеждать кого-то, а потом перестал. »
Это правильно. Зачем стучать в закрытую дверь... захотят - сами спросят.

Mancoffee
27-01-2025, 09:46
Я раньше пытался убеждать кого-то, а потом перестал. Нравится людям - на здоровье. »

Это правильно. Зачем стучать в закрытую дверь... захотят - сами спросят. »
У меня вечно с ним проблемы, что встроенным, что новым с гитхаб, то cmdlet не найден, то ещё что-то. Поэтому bat - чётко, стабильно, везде. Бонусом - можно намного больше нагуглить для него нужных сценариев, только свои данные поменяй.

SQLai Lama
27-01-2025, 13:35
А curl.exe порой бывает удобнее, чем iwr.Скорее функциональнее. Его можно использовать даже как сканер портов, когда по каким-то причинам нет nmap.
Я раньше пытался убеждать кого-то, а потом перестал. Нравится людям - на здоровье.Зачем? Будь то яп или ось, это всего-навсего инструменты достижения цели и здесь их эффективность оценивает каждый сам. Набьют себе оскомину раз-другой, задумаются а правильный ли был сделан выбор.
У меня вечно с ним проблемыМожет просто отсутствие мотивации сесть и основательно разобраться?

Uragan66
27-01-2025, 14:17
Бонусом - можно намного больше нагуглить для него нужных сценарие »
Сейчас ИИ для powershell, и не только, "пишет" любые скрипты. Главное правильную установку ему дать, ну и потом под себя подогнать конечно.
И Гуголь не нужен...

Mancoffee
27-01-2025, 16:34
Может просто отсутствие мотивации сесть и основательно разобраться? »
Ну смотри, я, как и многие другие юзали bat, информации по нему намного больше. И когда пытаешься разобраться, то если ты всё правильно сделал, то всё из гуд.
Лет так десять назад, встретил PS, тоже стало интересно, попробовал какой-то простейший пример, а шиш тебе, какие-то ошибки, начинаешь разбираться, гугл подсказывает, что вот так и так нужно сделать, чтобы исправить, исправил, пробую, опять хрен там. Потом пробуешь ещё чего-то найти, опять пробуешь, опять чёт исправляешь, реестры, шмеестры и опять те же яйца. Как думаешь, какая первая мысль? Правильно, да ну его на ... этот PS.
Проходит несколько лет, попался нужный скрипт и он только для PS. Гуглишь. О! Новая версия на гитхабе. Ну думаю, сто процентов пофиксили уже всё что нужно. Пробуешь, той ошибки нет, но есть другая, третья пятая десятая. И ты понимаешь, а на фиг мне тратить месяцы на изучение PS, если есть намного проще, дефолтнее и т.д., и т.п.? Если бы я этим зарабатывал или по работе нужно было, другой вопрос. А для домашнего так сказать юзера, если изначально на простейшем, в дефолте вылетают ошибки, то уверен, что это не стоит потраченного времени.

ПС. Вот когда-то заинтересовал AutoIt, всё, что делал там, всё чётко работает без нареканий, если и возникают ошибки, то когда исправляешь, всё так же чётко работает. И никакого геммора.
M$ любую мотивацию может превратить в депрессию :)

DJ Mogarych
27-01-2025, 18:12
Mancoffee, лучше с книжек начинать. Дело не в Микрософте, а в том, что учиться на случайных кривых примерах в интернете неэффективно.

Я по этому осваивал:
1. https://learn.microsoft.com/ru-ru/shows/getting-started-with-microsoft-powershell/
2. Learn Windows Powershell in a month of lunches (3rd edition)
3. PowerShell in Depth

Правда, это всё на английском, но это не художественная литература и язык там довольно простой.

YuS_2
27-01-2025, 19:13
Mancoffee, Ваш рассказ звучит примерно так:
"я всегда копал весь свой огород в 1 Га лопатой и всё всегда было чики-пики, вскопал, прошелся граблями и пошел отдыхать, а тут попался мотокультиватор - овно полное... то в землю закопается, то завести - целая проблема, то бензу надо, то масло, то ещё какая-нибудь напасть... не, что ни говори, лопата - вещь самая распространенная и супернадежная! "
Только не обижайтесь, как-то примерно так выглядит Ваше эссе сравнения. :)

Mancoffee
27-01-2025, 19:34
Дело не в Микрософте, а в том, что учиться на случайных кривых примерах в интернете неэффективно. »
Не, не так. Я начал учить AutoIt по русскоязычной документации и у меня никогда не возникало проблем (кроме тех, когда был невнимателен). А здесь, как я говорил - С НУЛЯ пробуешь сам написать простейший пример и он вываливается во всякие ошибки. Я ж не спорю, что если прочитать тонну информации, то можно сказать "А, я сам дурак".
Я как не любил его за эти всякие ошибки, так и до сих пор эта не любовь продолжается. И дело не в примерах (это я образно), а наверное в том, что всякие M$ безопасности по дефолту обрезают возможности и чтобы их включить нужно много читать. И тут дело не в лени или мотивации, а во времени, которого уже нет столько, чтобы это того стоило.

попался мотокультиватор »
Ну можно денэг дать фермеру, он приедет и за 15 мин тебе 5Га земли вскопает.
Короче демагогией не буду заниматься, скажу коротко - в дефолте bat ВСЕГДА И ВЕЗДЕ, PS - в дефолте НЕ всегда и НЕ везде. За счёт этой непредсказуемости я его и не люблю и любить не буду.
И в твоё сравнение ещё добавлю - когда я например обращаюсь на форум по ошибке PS, то мне ещё не разу никто не помог до состояния работоспособности. Это говорит, как по мне, лишь об одном - потому что решений может быть тысяча и одна или никто не знает 100%-го решения, почему она возникает. Поэтому сравнение такое себе.

YuS_2
27-01-2025, 19:34
Правда, это всё на английском »
Начать можно с книжки А.Попова Введение в Windows Powershell (https://andpop.ru/courses/winscript/books/posh_popov.pdf), подустаревшее уже издание, но начать - вполне нормально.

Ну можно денэг дать фермеру, он приедет и за 15 тебе 5Га земли вскопает. »
Это самый простой вариант... но действенный. Но это же надо денег давать :)

когда я например обращаюсь на форум по ошибке PS, то мне ещё не разу никто не помог до состояния работоспособности. Это говорит, как по мне, лишь об одном - потому что решений может быть тысяча и одна или никто не знает 100%-го решения, почему она возникает. »
Если задача описана подробно и точно, то решение будет найдено... а если приходите с вопросом: "всё пропало, оно почему-то не работает", то и искать причины мало кто будет.

Mancoffee
27-01-2025, 22:04
Это самый простой вариант... но действенный. Но это же надо денег давать »
Ну я подсказку дал, что можно много чего, стать миллионером например и за тебя всё будут делать для тебя. Даже научат тебя любому делу супермега курсами, при которых ты и напрягаться не будешь и потратишь грубо говоря месяц, а другие на эти же знания потратят годы. А что мне это принесёт, если я изучу книгу? Денег не принесёт. А это самый важный аспект жизни.
Если задача описана подробно и точно, то решение будет найдено... »
Не, не так. Я изначально в интернете (в своей стране, то бишь примерно с 2004 года) и не был эмоциональным, понимал, что нужно просто почитать. И тогда на это уходило минимум времени, а результат был. Тогда я даже везде, где регистрировался, читал соглашения, правила и т.д. Поэтому никогда на форумах у меня такого не было "Всё пропало". А то, что написал, это в буквальном смысле, я делаю пост, в котором максимально описываю проблему, что вот ввожу такую-то команду, по такой-то инструкции, получаю ошибку такую-то. Всё, после этого точка. Молчание ...
Короч ладно, такое, можно долго эту тему развивать, а смысла большого нет.

YuS_2
28-01-2025, 11:14
А что мне это принесёт, если я изучу книгу? Денег не принесёт. А это самый важный аспект жизни. »
Тут каждый сам решает, что и как ему делать:
1. Есть много денег, нет желания заморачиваться - проще нанять специалиста и все вопросы будут решены. Проверить иногда подробности будет сложно, но внешняя сторона вопроса, точно будет решена.
2. Нет денег или их не очень много (лишних), но есть желание научиться - необходимо изучать литературу по предмету изучения, возможно курсы, какие-либо пройти... в общем, заняться самообразованием. Иногда может понадобиться помощь спецов, чтобы задавать им интересующие вопросы (не всегда может помощь оказаться бесплатной, но можно найти тех, кто поможет просто так).
3. Нет денег, нет желания учиться, нет ничего, кроме желания получить решение вопроса - ну, не знаю, многое зависит от настроения, желания и многих других факторов, кто захотел бы помогать в подобных ситуациях. Но тоже, решение вопроса, вполне возможно - хотя чаще всего, будет стремиться к нулю... :idontnow:

А то, что написал, это в буквальном смысле, я делаю пост, в котором максимально описываю проблему, что вот ввожу такую-то команду, по такой-то инструкции, получаю ошибку такую-то. Всё, после этого точка. Молчание ... »
Здесь? А можно ссылочку? Только не по общим вопросам, а именно про powershell, т.к. речь о нем сейчас.

можно долго эту тему развивать, а смысла большого нет. »
Если Вы так свои вопросы воспринимаете - то как к ним будут окружающие относиться? Конечно, ответ будет сложно получить.

Mancoffee
28-01-2025, 13:21
1.и 2. Ну так в вот. Всё дело во времени и потребности.
3. Желание есть, но вот скажи, какой мне смысл тратить годы на изучение, чтобы что? Написать пару тех скриптов, которые нужны были? Дичь. Верно?

Если даже понимаешь перспективу, что это в дальнейшем поможет чему-то там, что не влияет на твою жизнь по сути. Маразм. Понятно, что с учётом того, что уже не тот возраст, в котором можно потратить много времени на интерес.

Здесь? А можно ссылочку? Только не по общим вопросам, а именно про powershell, т.к. речь о нем сейчас. »
Та давно было, лень искать. Но если слишком принципиально и будет появится желание найду.

Вот на вскидку в истории команд

PS C:\Users\User> Get-WmiObject -Class Win32_Service -Filter "Name='TotalCMD'"
Get-WmiObject: The term 'Get-WmiObject' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Suggestion [4,General]: The most similar commands are:

И это команда, которую взял у человека, у которого она же работает.
И вот это вот cmdlet самая такая, которая встречается в ~80% случаев. И решения слишком разные, слишком невнятные и поэтому ...
Если Вы так свои вопросы воспринимаете »
Это относится к философии/и т.д., а не к решению задачи.




© OSzone.net 2001-2012