|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Сортировать числа (не цифры) |
|
CMD/BAT - [решено] Сортировать числа (не цифры)
|
Забанен Сообщения: 795 |
Привет.
Как можно отсортировать нормально, по числу, а не по символу ? Вот такой файл, нопример: я его потом дальше обрабатываю, подставляю недостающую часть адреса, др. параметры и тяну 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
|
Профиль | Отправить PM | Цитировать А варианты разрешений у тебя появляются динамически? А то проще всего взять choice.
И жестко привязать. Даже если динамически на мой взгляд здесь просится choice. |
Отправлено: 18:47, 11-02-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Забанен Сообщения: 795
|
нет, не динамически. это просто файл со списком доступных "качеств". Для каждой новой закачки он будет отличаться только колличеством доступных "качеств". Может быть больше, может быть меньше... но такой же формат, отличия в колличестве строк.
А как это будет с choice ? зы. оно и так выводит и работает у мну нормально, все скачивается. Просто нет сортировки, чисто визуально... высшее качество в выборе может оказаться под номером "3" например. А яб хотел чтоб оно было всегда первым, а для этого яб хотел отсортировать этот файл по величине чисел. чойс же не сортирует никак вродеб. |
Последний раз редактировалось x0r, 11-02-2018 в 19:57. Отправлено: 19:50, 11-02-2018 | #3 |
Пользователь Сообщения: 87
|
Профиль | Отправить 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 |
Забанен Сообщения: 795
|
да нет.. я именно wget и grep мучаю
![]() Хочу просто отсортировать для удобства. Просто странно, искал и не нашел. Неужели за столько лет никому не надо было сортировать по числам в bat\cmd ? ну вот хотяб имена папок: 101 235 560 1258 4580 ... онож отсортируе их по первой цифре, но кому это нужно?! ![]() |
|
Отправлено: 22:48, 11-02-2018 | #5 |
Ветеран Сообщения: 5380
|
Профиль | Отправить PM | Цитировать Цитата x0r:
@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 |
Забанен Сообщения: 795
|
Ну понял, в общем..
Благодарю Казбек, твой способ отлично сортирует цифры, оч. пригодиццо. Такоеб я сам непридумал ![]() choice не мой случай. наверно можно, но так тоже ниччё, как есть ![]() В общем, когда сталкиваешься с консольют в виндовс, тебя всегда со всех сторон поджидают ёжики, кактусы и иголки... колоться и плакать будешь. Т.к. я все одно юзаю wget и grep , то какого черта я пытаюсь пользовать sort из винды - можнож оттудаж , откуда и grep - из UnixUtils! Взял её и все получилось как и должно, просто и удобно. Сортировать можно как угодно, вариантов - все какие могут понадобиццо. В итоге вот это решило всё, все отсортировано по старшинству и выводится в запросе как хотелось с сортировкой значений от бОльшего к меньшему
: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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] сортировать ссылки по алфивиту в имени файла | 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 |
|