Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] Как получить данные из строки

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


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

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


Здравствуйте, пытаюсь получить post ID из ссылки.
Ссылки вида:
Код: Выделить весь код
https://subd.site.com/some-variably-long-name-2024886/
или например пикабу
https://pikabu.ru/story/derzhatsya_netu_bolshe_sil_7656656/
https://pikabu.ru/story/otvet_na_post_pozhiznennoe_pravo_na_mesto_v_ocheredi_7657274/
Подскажите пожалуйста как получить в переменной только post id то есть только цифры.
Для каждого сайта будет свой скрипт.

Отправлено: 19:45, 17-08-2020

 

Ветеран


Contributor


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

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


ateka, Количество цифр постоянно (в ваших примерах 7)?

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

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

Отправлено: 21:19, 17-08-2020 | #2



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

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


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


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

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


Да.

Отправлено: 21:21, 17-08-2020 | #3


Ветеран


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

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


Просто заменить все ненужное:
Код: Выделить весь код
@echo off
setlocal

set "str=https://subd.site.com/some-variably-long-name-2024886/"
set "str=%str:-= %"
set "str=%str:/=%"

for %%i in (%str%) do set "id=%%i"

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

Отправлено: 21:26, 17-08-2020 | #4


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


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

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


Цитата Foreigner:
Просто заменить все ненужное: »
Спасибо. С пикабу всё замечательно.
С вторым сайтом возникла проблема.
Я не обратил внимание но оказывается в url добавляется параметры.
Код: Выделить весь код
https://subd.site.com/some-variably-long-name-2024886/?sorting=best
И с этой ссылкой способ не работает.

Отправлено: 21:40, 17-08-2020 | #5


Ветеран


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

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


Цитата ateka:
И с этой ссылкой способ не работает. »
Посоветую решение на powershell. CMD и строки это садомазохизм.
Код: Выделить весь код
'https://subd.site.com/some-variably-long-name-2024886/?sorting=best' -replace '.*(\d{7}).*','$1'
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:50, 17-08-2020 | #6


Забанен


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

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


ateka, лучше возьмите sed или pwsh. В первом случае:
Код: Выделить весь код
echo https://subd.site.com/some-variably-long-name-2024886/?sorting=best | sed -n "s/.*\([0-9]\{7\}\).*/\1/p"
Во втором:
Код: Выделить весь код
((gc X:\path\file.txt) -split '\p{P}').Where{$_ -as [Int32] -and "$_".Length -eq 7}
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:53, 17-08-2020 | #7


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


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

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


Цитата Foreigner:
Просто заменить все ненужное: »
Я продолжил по аналогии и вроде работает. Надо потестировать ещё но пост id выдаёт. Спасибо.
Код: Выделить весь код
set "str=%str:-= %"
set "str=%str:/=%"
set "str=%str:?=%"
set "str=%str:sorting=%"
set "str=%str:best=%"
Цитата Foreigner:
Посоветую решение на powershell. »
Факт что пошик круче смд. Но у меня сейчас системно учиться возможности нет.
На пошике я не пишу а гуглю куски кода если выбора нет. Или прошу помощи.

Отправлено: 22:00, 17-08-2020 | #8


Забанен


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

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


К слову, это ведь ссылки. В pwsh к ним применим тип [Uri].
Код: Выделить весь код
E:\sandbox
[3] λ [Uri]'https://subd.site.com/some-variably-long-name-2024886/?sorting=best'

AbsolutePath   : /some-variably-long-name-2024886/
AbsoluteUri    : https://subd.site.com/some-variably-long-name-2024886/?sorting=best
LocalPath      : /some-variably-long-name-2024886/
Authority      : subd.site.com
HostNameType   : Dns
IsDefaultPort  : True
IsFile         : False
IsLoopback     : False
PathAndQuery   : /some-variably-long-name-2024886/?sorting=best
Segments       : {/, some-variably-long-name-2024886/}
IsUnc          : False
Host           : subd.site.com
Port           : 443
Query          : ?sorting=best
Fragment       :
Scheme         : https
OriginalString : https://subd.site.com/some-variably-long-name-2024886/?sorting=best
DnsSafeHost    : subd.site.com
IdnHost        : subd.site.com
IsAbsoluteUri  : True
UserEscaped    : False
UserInfo       :

E:\sandbox
[4] λ
А вытаскивать можно из сегментов, либо по абсолютному пути.

Как вариант можно запилить гибрид командного сценария с WSH.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:05, 17-08-2020 | #9


Старожил


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

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


ateka, если на powershell, то можно и таким кодом:
Код: Выделить весь код
'https://subd.site.com/some-variably-long-name-2024886/?sorting=best' -match '(\d{7})' | Out-Null
$id = $matches[0]
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:27, 18-08-2020 | #10



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

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как из командной строки получить email пользователя? TabulaMinds Скриптовые языки администрирования Windows 8 10-02-2017 15:02
CMD/BAT - Как из for получить значение из одной строки смещаясь на 1 при каждом проходе Voodooman Скриптовые языки администрирования Windows 18 28-08-2011 05:54
VBS/WSH/JS - как получить время и из строки в логе с определенным событием mitiya Скриптовые языки администрирования Windows 8 10-01-2011 14:49
[решено] Как получить данные в скрипт из командной строки? madmasles AutoIt 2 27-11-2009 15:50
Как получить данные из xml-файла? ptt Программирование и базы данных 1 14-10-2004 09:45




 
Переход