Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
 Аватар для lamaundercover
3 / 3 / 1
Регистрация: 15.08.2016
Сообщений: 149

Сортировка путей файлов по длине

29.04.2017, 12:15. Показов 3840. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые!

Собственно, сабж:
dir /s /b | sort /r /+250 > length path.txt - выводит без сортировки по длине пути, где мистейк?!

P.S. Заодно мб знатоки подскажут, как в нужной папке от админа запускать cmd без шифтов и зажимов нужна только комбинация клавиш (темка Запуск cmd.exe от имени администратора в любой папке)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.04.2017, 12:15
Ответы с готовыми решениями:

Запрет на удаление файлов и путей к ним
файл использую на работе при случаях, когда у пользователя нехватка места подскачите, чего не хватает в данном .bat файле 1) Как найти...

Вывод в текстовый файл относительных путей файлов, созданных в определённой директории за день
появилась следующая задача, формировать каждый день выходной файл, в котором должны присутствовать файлы, созданные пользователями за день....

Сортировка по длине
На вход подается некоторое количество векторов R2, векторов R3 и отрезков R3. Отсортировать и вывести их по возрастанию длин. Помогите,...

14
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
29.04.2017, 13:48
Цитата Сообщение от lamaundercover Посмотреть сообщение
dir /s
при этом что, в вашем понимании
Цитата Сообщение от lamaundercover Посмотреть сообщение
сортировки по длине пути
пример путей:
Code
1
2
3
4
C:\papka\file1111111111
C:\dlinnaja_papka1\file
C:\papka1\ppapka1\file1
C:\dlinnaja_papka\file1
в данном случае все одинаковые по длине и любой мог бы быть короче/длиннее - какую ориентировку или логику это могло бы дать, каков смысл оного действа?

Добавлено через 5 минут
cmd.exe от имени администратора - ярлык с соотв. галкой и устраивающей вас комбинацией клавиш.

Добавлено через 19 минут
вот вам длина путей:
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
for /f "delims=" %%a in ('dir /s /b') do call :# "%%a"
pause& exit
 
:#
 setlocal enabledelayedexpansion
  for /f "delims=" %%b in ('">$ echo %~1& echo $"') do set/a l=%%~zb-2& cmd/v/c echo !l!& del $
 endlocal
exit /b
1
 Аватар для lamaundercover
3 / 3 / 1
Регистрация: 15.08.2016
Сообщений: 149
29.04.2017, 16:23  [ТС]
Спасибо за ответ

ПРошу меня милостиво извинить за мои низкие познания, но могли бы вы пояснить "пооператорно" (подробно), что означают эти символы:
1)
Windows Batch file
1
-2&/*почему именно размер длины строки выдает?*/
2)
Windows Batch file
1
 !l!&
3)
Windows Batch file
1
 $
..

Что касается cmd ярлыка постоянного то это не вариант, поскольку папки постоянно разные, сейчас использую выпадающее меню FileMenuTools, но это надо сделать два клика (чтобы открыть от админа в активной папке), а мне нужно чтобы комбинацией, так быстрее.
0
 Аватар для volodin661
6799 / 2298 / 349
Регистрация: 10.12.2013
Сообщений: 7,924
29.04.2017, 20:19
Лучший ответ Сообщение было отмечено lamaundercover как решение

Решение

Цитата Сообщение от alpap Посмотреть сообщение
в данном случае все одинаковые по длине и любой мог бы быть короче/длиннее
одного арабского шейха - знатока и ценителя лошадей англичане пригласили на скачки.
Зачем ?- удивился шейх, - я и так знаю, что одна лошадь может бежать быстрее другой.

Добавлено через 28 минут
эх, в предыдущем высказывании надо было вместо лошади верблюда подставить..

Если вот так, то вопросов 'но, Холмс, как?? почему??' не возникнет
PowerShell
1
2
3
dir $path -file -recurse |
Select FullName,@{Name="NameLength";Expression={$_.fullname.length}} |
Sort NameLength -Descending
Оболочка powershell - основное консольное средство Windows, начиная с версии 7
1
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
29.04.2017, 20:48
lamaundercover,
кстати отлож расш там лишнее, достаточно этого:
Windows Batch file
1
2
3
4
5
6
7
8
@echo off
for /f "delims=" %%a in ('dir /s /b') do call :# "%%a"
pause& exit
 
:#
 for /f "delims=" %%a in ('">$ echo %~1& echo $"') do set/a l=%%~za-2
 echo Длина пути: %l%& del $
exit /b
Цитата Сообщение от lamaundercover Посмотреть сообщение
пояснить
если отсюда не разберетесь, то больше и нет смысла пояснять
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo on
for /f "delims=" %%a in ('dir /s /b') do call :# "%%a"
pause& exit
 
:#
 >file.txt echo %~1
 for /f "delims=" %%a in ('echo file.txt') do set/a l=%%~za-2
 echo %l%
 :: del file.txt
exit /b
0
 Аватар для lamaundercover
3 / 3 / 1
Регистрация: 15.08.2016
Сообщений: 149
29.04.2017, 22:16  [ТС]
Цитата Сообщение от alpap Посмотреть сообщение
lamaundercover,
кстати отлож расш там лишнее, достаточно этого:
@echo off
for /f "delims=" %%a in ('dir /s /b') do call :# "%%a"
pause& exit
:#
*for /f "delims=" %%a in ('">$ echo %~1& echo $"') do set/a l=%%~za-2
*echo Длина пути: %l%& del $
exit /b

если отсюда не разберетесь, то больше и нет смысла пояснять

Windows Batch fileВыделить код

@echo on
for /f "delims=" %%a in ('dir /s /b') do call :# "%%a"
pause& exit
:#
*>file.txt echo %~1
*for /f "delims=" %%a in ('echo file.txt') do set/a l=%%~za-2
*echo %l%
:: del file.txt
Спасибо за помощь, с синтаксисом разобрался =/

Но, ..

1 вариант с выдачей результата в окне выдает абру кадабру вместо названий файлов, более того, они не сортированы.

2 вариант с выдачей резалта в файл выдает только первую строку, тестировался на 2 компах
Миниатюры
Сортировка путей файлов по длине   Сортировка путей файлов по длине  
0
 Аватар для lamaundercover
3 / 3 / 1
Регистрация: 15.08.2016
Сообщений: 149
29.04.2017, 22:21  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
Если вот так, то вопросов 'но, Холмс, как?? почему??' не возникнет
PowerShellВыделить код
dir $path -file -recurse |
Select FullName,@{Name="NameLength";Expression= {$_.fullname.length}} |
Sort NameLength -Descending
Супер все воркает, но осталось 3 вопроса:
1) как результат в новый файл скинуть?
2) почему этот же супер код не пашет с Get-ChildItem Path:\ -Recurse
3) как сразу явно указать путь к директории...

Заранее Спасибо!
0
Любознательный
 Аватар для YuS_2
7406 / 2259 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
29.04.2017, 22:31
Цитата Сообщение от lamaundercover Посмотреть сообщение
1) как результат в новый файл скинуть?
PowerShell
1
>out-test.txt
или
PowerShell
1
|out-file -enc default out-test.txt
Цитата Сообщение от lamaundercover Посмотреть сообщение
почему этот же супер код не пашет с Get-ChildItem Path:\ -Recurse
вообще-то dir - алиас Get-ChildItem
Цитата Сообщение от lamaundercover Посмотреть сообщение
3) как сразу явно указать путь к директории...
PowerShell
1
man dir -full
0
 Аватар для lamaundercover
3 / 3 / 1
Регистрация: 15.08.2016
Сообщений: 149
30.04.2017, 00:17  [ТС]
PowerShell
1
2
3
4
dir $path -file -recurse |
Select FullName,@{Name="NameLength";Expression={$_.fullname.length}} |
Sort NameLength -Descending |
out-file -enc default out-test.txt
Вот итоговый код, все воркает, но выдает вместо всего пути троеточия тогда, когда путь "длинный"...


1) как это исправить так, чтобы PS показывал весь путь?
2) как добавить в каждую строку длину пути (желательно, хотя эту операцию в экселе можно сделать за 15 сек)?
3) как в первой строке сразу прописать путь (у меня с dir -full вылетает ошибка).

P.S. Справочник бы еще для PS какой нибудь, изредка, но требуется данная штука..
Миниатюры
Сортировка путей файлов по длине  
0
 Аватар для volodin661
6799 / 2298 / 349
Регистрация: 10.12.2013
Сообщений: 7,924
30.04.2017, 06:40
Лучший ответ Сообщение было отмечено lamaundercover как решение

Решение

PowerShell
1
2
3
4
5
Get-ChildItem   c:\tempp\boost_1_60_0 -File -Recurse                            |                     
Select          FullName, @{Name="NameLength"; Expression={$_.FullName.Length}} |
Sort            NameLength -Descending                                          |
Format-Table    -AutoSize -Wrap                                                 |
Out-File        test.txt
Добавлено через 2 часа 30 минут
Да, чуть не забыл,
традиционная рубрика
"Использование редактора Vim как универсального средства при решении различных задач автоматизации Windows"

Windows Batch file
1
vim +"r !dir/s/b/a-d c:\tempp" +"%s/^/\=len(getline('.')).' '" +sort!n +wq!test.txt
этот вызов vim делает всё то же самое, что и код powershell выше, но в 25 раз быстрее;
в файле test.txt 50 000 строк

Добавлено через 29 минут
cmd-версия от alpap, отожрала 100% CPU, 300Mb памяти
и работала 620 сек ( Vim: 1 сек, pоwershell: 25 сек )

Добавлено через 3 минуты
причём она(cmd-версия) даже без сортировки
1
 Аватар для lamaundercover
3 / 3 / 1
Регистрация: 15.08.2016
Сообщений: 149
01.05.2017, 14:33  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
PowerShell
1
2
3
4
5
Get-ChildItem   c:\tempp\boost_1_60_0 -File -Recurse                            |                     
Select          FullName, @{Name="NameLength"; Expression={$_.FullName.Length}} |
Sort            NameLength -Descending                                          |
Format-Table    -AutoSize -Wrap                                                 |
Out-File        test.txt
Код сортирует по длине файла, выводит длинный путь в две строки..

Возможно ли добавить в PS код для того, чтобы:
1) отобразить длины для каждого файла в выводимом файле;
2) сделать так, чтобы файлы с любой длинной отображались без переноса корректно..

В случае реализации этих двух функций в PS он будет эффективнее сочетания допустим того же TreeSize и Excel (прога может вывести пути в эксель, где файлы можно отсортировать).
0
Любознательный
 Аватар для YuS_2
7406 / 2259 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
01.05.2017, 14:43
lamaundercover, Вы бы перебрались уже в ветку PS, там бы и ответ отыскался быстрей...
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.05.2017, 15:04
Цитата Сообщение от lamaundercover Посмотреть сообщение
2) сделать так, чтобы файлы с любой длинной отображались без переноса корректно..
Где отображались? При записи в файл?
Можно принудительно задать максимальную ширину строки при записи в файл:

PowerShell
1
2
3
4
5
Get-ChildItem   c:\tempp\boost_1_60_0 -File -Recurse                            |                     
Select          FullName, @{Name="NameLength"; Expression={$_.FullName.Length}} |
Sort            NameLength -Descending                                          |
Format-Table    -AutoSize                                                |
Out-File -Width 1000 test.txt
Добавлено через 1 минуту
Цитата Сообщение от lamaundercover Посмотреть сообщение
отобразить длины для каждого файла в выводимом файле
Так ведь отображаются в столбце NameLength.

Добавлено через 14 минут
Цитата Сообщение от lamaundercover Посмотреть сообщение
Справочник бы еще для PS какой нибудь, изредка
Если изредка, то "C:\Windows\Help\mui\0419\WindowsPowerSh ellHelp.chm" вам вполне хватит.
Кроме того в консоли PS по команде man команда выдается краткая справка по указанной команде, а
man команда -full выдает полную справку с примерами.
1
 Аватар для lamaundercover
3 / 3 / 1
Регистрация: 15.08.2016
Сообщений: 149
01.05.2017, 15:18  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Так ведь отображаются в столбце NameLength.
Без указания ключа Width вторая колонка не отображается, хотя сорт осуществляется!

Спасибо! Теперь все работает!
0
 Аватар для volodin661
6799 / 2298 / 349
Регистрация: 10.12.2013
Сообщений: 7,924
01.05.2017, 21:03
Не экспериментировал,
но похоже, что 5-ая версия powershell освобождена от ужасов принудительного обрезания,
что политически* правильно и служит идеалам гуманизма и справедливости.


(*) всё выводится как есть, а корректировка вывода регулируется опциями
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.05.2017, 21:03
Помогаю со студенческими работами здесь

Сортировка по длине
Помогите пожалуйста. дана строка(слова разделены пробелом) нужно вывести их в алфавитном порядке и вывести по мере укорачивания...

Сортировка по длине
Отсортируйте введённые строки по возрастанию их длины, строки одинаковой длины при этом должны быть отсортированы по возрастанию в...

Сортировка рёбер по длине
Ориентированный взвешенный граф задан перечнем дуг (ориентированных рёбер). Отсортировать эти дуги по возрастанию длин, сохранив (в...

Сортировка слов по длине
задан текст. выполнить сортировку этих слов, расположив их в порядке увеличения количества букв в словах

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru