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

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

Ответить
Настройки темы
CMD/BAT - [решено] Сортировать числа (не цифры)
x0r x0r вне форума

Забанен


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

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


Привет.
Как можно отсортировать нормально, по числу, а не по символу ? Вот такой файл, нопример:
Код: Выделить весь код
hls-1080p.m3u8
hls-480p.m3u8
hls-720p.m3u8
hls-360p.m3u8
hls-250p.m3u8
я его потом дальше обрабатываю, подставляю недостающую часть адреса, др. параметры и тяну wget-ом. Так вот, надо отсортировать числа по величине, дабы удобнее было ввести значение кот-е хочешь скачать. Чтоб первым шло самое большое, мешьнее... меньшее и т.д. Там могет быть и hls-2048p.m3u8
кусок из батнега где эти значения выбираются

Код: Выделить весь код
:CIKL
SetLocal EnableDelayedExpansion
set /a zero=0
for /f "UseBackQ Delims=" %%A IN ("tmp") do (
  set /a zero+=1
  if !zero!==1 set a=%%A
  if !zero!==2 set b=%%A
  if !zero!==3 set c=%%A
  if !zero!==4 set d=%%A
  if !zero!==5 set e=%%A
)

echo ^      ¤¤¤                                                              ¤¤¤
echo ^          -------------------------------------------------------------------------
echo Что будем качать: (1)-%a%  (2)-%b%  (3)-%c%  (4)-%d%  (5)-%e%
echo ^             Q - Выход
echo ^          -------------------------------------------------------------------------
echo ^      ¤¤¤                                                              ¤¤¤
set /p answ=_:

if /i %answ% EQU q goto :EOF
if /i %answ% EQU 1 set m3u=%a%
if /i %answ% EQU 2 set m3u=%b%
if /i %answ% EQU 3 set m3u=%c%
if /i %answ% EQU 4 set m3u=%d%
if /i %answ% EQU 5 set m3u=%e%

sort сортирует тупо по первой цифре и выдает бред.
Это в батнегах вообще можно сделать?

Отправлено: 18:23, 11-02-2018

 

Пользователь


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

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


А варианты разрешений у тебя появляются динамически? А то проще всего взять choice.
И жестко привязать. Даже если динамически на мой взгляд здесь просится choice.

Отправлено: 18:47, 11-02-2018 | #2



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

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

x0r x0r вне форума Автор темы

Забанен


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

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


нет, не динамически. это просто файл со списком доступных "качеств". Для каждой новой закачки он будет отличаться только колличеством доступных "качеств". Может быть больше, может быть меньше... но такой же формат, отличия в колличестве строк.
А как это будет с choice ?

зы. оно и так выводит и работает у мну нормально, все скачивается. Просто нет сортировки, чисто визуально... высшее качество в выборе может оказаться под номером "3" например. А яб хотел чтоб оно было всегда первым, а для этого яб хотел отсортировать этот файл по величине чисел. чойс же не сортирует никак вродеб.

Последний раз редактировалось x0r, 11-02-2018 в 19:57.


Отправлено: 19:50, 11-02-2018 | #3


Пользователь


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

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


Вот скрипт от Иски. Он его кому то тут давал. Адаптируй его под себя. Там где 1234 поставь свои переменные. Как минимум на одно нажатие меньше будет. Ты youtube-dl мучаешь? Она же качество по youtube-dl -Ф сортирует от меньшего к большему. В таком случае твоя задача выглядит элементарной.
Код: Выделить весь код
@echo off
>nul chcp 65001
setlocal enableextensions enabledelayedexpansion

:Repeat
echo ╔═══════════ Меню ═══════════╗
echo ║ 1. Создать папки           ║
echo ║ 2. Переместить заготовки   ║
echo ║ 3. Забрать файлы по маске  ║
echo ║ 4. Выход из меню           ║
echo ╟────────────────────────────╢
echo ║ Выберите один из вариантов ║
echo ╚════════════════════════════╝
echo.
choice.exe /c 1234

if %errorlevel% equ 4 exit /b
if %errorlevel% equ 255 exit /b

call :Sub%errorlevel%
goto :Repeat

endlocal
exit /b 0

:Sub1
	call d:\папка\111.bat
	exit /b

:Sub2
	call d:\папка\222.bat
	exit /b

:Sub3
	call d:\папка\333.bat
	exit /b

Отправлено: 20:11, 11-02-2018 | #4

x0r x0r вне форума Автор темы

Забанен


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

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


да нет.. я именно wget и grep мучаю Качать с трубы есть и много чем.
Хочу просто отсортировать для удобства. Просто странно, искал и не нашел. Неужели за столько лет никому не надо было сортировать по числам в bat\cmd ? ну вот хотяб имена папок:
101
235
560
1258
4580
... онож отсортируе их по первой цифре, но кому это нужно?!

Отправлено: 22:48, 11-02-2018 | #5


Аватара для Казбек

Ветеран


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

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


Цитата x0r:
101
235
560
1258
4580
... онож отсортируе их по первой цифре, но кому это нужно?! »
Код: Выделить весь код
@echo off
setlocal EnableDelayedExpansion

for /F "tokens=1-4 delims=." %%a in (input.txt) do (
    set /A "a=10000+%%a"
    set "line[!a:~1!]=%%a"
)

for /F "tokens=2 delims==" %%a in ('set line[') do echo %%a
pause
Результат

-------
Кто реку перешел, тому росы бояться ни к чему

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

Отправлено: 23:31, 11-02-2018 | #6

x0r x0r вне форума Автор темы

Забанен


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

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


Ну понял, в общем..
Благодарю Казбек, твой способ отлично сортирует цифры, оч. пригодиццо. Такоеб я сам непридумал этточно.

choice не мой случай. наверно можно, но так тоже ниччё, как есть

В общем, когда сталкиваешься с консольют в виндовс, тебя всегда со всех сторон поджидают ёжики, кактусы и иголки... колоться и плакать будешь. Т.к. я все одно юзаю wget и grep , то какого черта я пытаюсь пользовать sort из винды - можнож оттудаж , откуда и grep - из UnixUtils!

Взял её и все получилось как и должно, просто и удобно. Сортировать можно как угодно, вариантов - все какие могут понадобиццо.
В итоге вот это
Код: Выделить весь код
sort -V -r tmp > tmps
решило всё, все отсортировано по старшинству и выводится в запросе как хотелось
с сортировкой значений от бОльшего к меньшему

Код: Выделить весь код
:CIKL
SetLocal EnableDelayedExpansion
"%PROGRAMFILES%\UnixUtils\bin\sort.exe" -V -r tmp > tmps 


set /a zero=0
for /f "UseBackQ Delims=" %%A IN ("tmps") do (
  set /a zero+=1
  if !zero!==1 set a=%%A
  if !zero!==2 set b=%%A
  if !zero!==3 set c=%%A
  if !zero!==4 set d=%%A
  if !zero!==5 set e=%%A
)

echo ^      ¤¤¤                                                              ¤¤¤
echo ^          -------------------------------------------------------------------------
echo Что будем качать: (1)-%a%  (2)-%b%  (3)-%c%  (4)-%d%  (5)-%e%
echo ^             Q - Выход
echo ^          -------------------------------------------------------------------------
echo ^      ¤¤¤                                                              ¤¤¤
set /p answ=_:

if /i %answ% EQU q goto :EOF
if /i %answ% EQU 1 set m3u=%a%
if /i %answ% EQU 2 set m3u=%b%
if /i %answ% EQU 3 set m3u=%c%
if /i %answ% EQU 4 set m3u=%d%
if /i %answ% EQU 5 set m3u=%e%


hls-1080p.m3u8
hls-720p.m3u8
hls-480p.m3u8
hls-360p.m3u8
hls-250p.m3u8


+ теперь запрос этот я вообще могу убрать, а сразу качать первое значение т.к. оно и будет самым лучшим кач-вом. Этот запрос и нужен был только изза того, что я не мог выбрать автоматом лучшее, приходилось выбирать вручную.

Вроде всё. Если ниччё не испортится\не придумается, завтра закрою как решенную.

Последний раз редактировалось x0r, 12-02-2018 в 15:21.


Отправлено: 01:13, 12-02-2018 | #7



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] сортировать ссылки по алфивиту в имени файла Alexander_88 Скриптовые языки администрирования Windows 7 06-11-2021 01:40
Google Play будет сортировать приложения по качеству работы OSZone News Новости информационных технологий 0 07-08-2017 09:30
Windows становится безопаснее по мере уменьшения числа не обновляемых систем OSZone News Новости и события Microsoft 1 09-08-2016 23:32
Интерфейс - Не получается сортировать, группировать файлы в папках Windows 8.1 Goretss Microsoft Windows 8 и 8.1 1 26-11-2014 14:57
C/C++ - [решено] Исключить из числа четные цифры. alena_lep Программирование и базы данных 4 03-03-2014 17:28




 
Переход