|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,519
|
|||||||||||
[оптимизация] обрезка файловых путей с конца07.02.2019, 14:00. Показов 5197. Ответов 20
Метки нет (Все метки)
Всем привет!
Подскажите, как можно оптимизировать приведенные ниже батники. -------- Для отладочных целей необходимо выводить некоторую диагностическую информацию. В частности: файловые пути. Но пути часто оказываются слишком избыточно длинные. И это портит читабельность логов. Поэтому, возникла потребность укоротить файловые пути с конца. Что бы отображать не весь путь, а только часть. Например, отображаем только 5 последних родительских каталогов. Для этого я построила батник. Он полностью рабочий, и иллюстрирует нужное на практике:
Одна проблема - уж слишком он медленно работает. Проблема усугубляется тем, что исходные файловые пути могут быть взяты черти откуда, и записаны черти как. Поэтому, прежде чем использовать такие пути, их необходимо нормализировать. Для нормализации я написала вот такой скрипт:
".."/"." точечки.А так же, удалить лишние слэши в конце строки. Он все делает замечательно, но тоже добавляет тормозов. В реальных условиях достаточно много файловых путей, которые что бы красиво вывести в лог, нужно предварительно обрабатывать. Но мои скрипты слишком медленные! С ними конечно логи намного красивее, Но их использование привело к серьёзному замедлению выполнения наших процедур. Можно ли, сохранив дизайн использования моих батников, как то ускорить их работу? Важно:Известно, что на машинках, где запускаются скрипты, может и не быть прав для запуска скриптов повер-шелла.
0
|
|||||||||||
| 07.02.2019, 14:00 | |
|
Ответы с готовыми решениями:
20
Преобразование файловых путей в древовидный вид Обрезка полных путей файлов Парсинг путей в дерево. Оптимизация |
|
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
||||||||||||||||
| 07.02.2019, 16:24 | ||||||||||||||||
|
eva2326,
1.
3.
2
|
||||||||||||||||
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
||||||||||||||||||||||||||||
| 07.02.2019, 17:22 | ||||||||||||||||||||||||||||
|
v_svitere, уже справедливо заметил, что -ExecutionPolicy Bypass позволяет запускать ps-скрипты в обход настроенной по умолчанию политики:
2
|
||||||||||||||||||||||||||||
|
Любознательный
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
|
|||||||
| 07.02.2019, 18:26 | |||||||
2
|
|||||||
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,519
|
|||||||||
| 08.02.2019, 17:53 [ТС] | |||||||||
|
- работает не правильно. путь: C:\111\222\333\..\..\555нормализировал вот так: C:\111\222\333\а должен был так: C:\111\555Нельзя просто так брать и вырезать точечки. Путь же сделается уже не правильным!!! Две точки - значит нужно подняться на уровень вверх. После нормализации получится: C:\111\555![]() Простой сплит всегда лучше регулярки. Проще для понимания, и работает в десятки раз быстрее (если не в сотни) - работает оооочееееень медленно. подозреваю, что повершелл очень медленно взлетает. - не правильно работает. отрезал путь сначала. а должен был с конца.
0
|
|||||||||
|
Любознательный
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
|
|||
| 08.02.2019, 21:23 | |||
|
время работы 1 сек., если это ооооочеееень медленно... тогда да. ![]() файл/конечный каталог... хотя, конечно, предполагаю, что реальностей может существовать больше чем одна.
0
|
|||
|
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
|||
| 08.02.2019, 21:33 | |||
|
0
|
|||
|
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
|
||||||||||||||||||||||||||||||||||||
| 09.02.2019, 17:29 | ||||||||||||||||||||||||||||||||||||
![]() Добавлено через 1 час 44 минуты
...
2
|
||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||
| 09.02.2019, 17:50 | |||||||||||||||||
Да и смысл изобретать велосипеды, если все уже написано в системных библиотеках:
5
|
|||||||||||||||||
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,519
|
|||||||||||
| 10.02.2019, 20:19 [ТС] | |||||||||||
|
Не по теме: Мне казалось, любой человек, который имеет дело в файловыми путями, "C:\test1\test2\test3\test4\test55\..\test5\test6\test7"Нормализуем: "C:\test1\test2\test3\test4\test5\test6\test7"Укорачиваем: "test3\test4\test5\test6\test7"Получаем вполне себе корректный относительный путь. Без нормализации получилось бы: "test55\..\test5\test6\test7"Что не очень красиво в логах. Но такой путь по прежнему остается корректным. Если же просто так вырезать управляющие точки: "C:\test1\test2\test3\test4\test55\test5\test6\test7"То уже получаем невалидный путь. Который может вести в несуществующий каталог. Или, что ещё хуже, в существующий, но не тот, куда ведет оригинальный путь. Не по теме: Вы не задумались, зачем вообще может быть нужен путь, Вот эти два пути ведут в один и тот же каталог: C:\work\exampleC:\work\.\exampleА запускать повер-шелл для обработки отдельного пути получается ещё медленнее, чем велосипед на bat
0
|
|||||||||||
|
Любознательный
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
|
||||
| 10.02.2019, 20:34 | ||||
![]()
1
|
||||
|
|
||
| 10.02.2019, 20:34 | ||
|
Powershell работает в 100-1000 раз быстрее cmd. Powershell + C# работает в миллион раз быстрее cmd. Единственный минус powershell - замедленный холодный старт. Для первичной загрузки командлетов (читай библиотек) требуется при старте интерпретатора несколько секунд. В этом плане cmd, конечно, быстрее. И это единственное в чем он быстрее.
1
|
||
| 10.02.2019, 20:50 | ||||
|
Не по теме:
0
|
||||
|
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
||||||
| 11.02.2019, 00:34 | ||||||
|
и все-таки вариант на cmd
4
|
||||||
|
741 / 339 / 134
Регистрация: 17.03.2014
Сообщений: 842
|
||||||
| 11.02.2019, 00:50 | ||||||
|
alpap, можете прокомментировать трюк?
1
|
||||||
|
6799 / 2298 / 349
Регистрация: 10.12.2013
Сообщений: 7,924
|
||
| 11.02.2019, 04:28 | ||
|
поэтому вырезать из него и дорисовывать к нему можно всё, что угодно, лишь бы красиво и информативно. C:「folder-A」 ✄ 「temp21」「18012018」 C:「folder-B」 ✄ 「..」「01022019」
2
|
||
|
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
||||||
| 11.02.2019, 11:24 | ||||||
|
b0gus, сначала дозапись в tmp (+) каждой $%%n (в одну строку с дописыванием \ при каждой операции, поэтому последний приходиться удалять ниже), как закончились - считывание оттуда же первой и единственной строки в z.
eva2326, Кстати вариант без временного файла:
2
|
||||||
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,519
|
|||||||||||||||||||||||||||
| 11.02.2019, 22:24 [ТС] | |||||||||||||||||||||||||||
|
Почти-почти то, что нужно. Но у меня к вам есть два вопроса: 1. Почему у вас такая неоптимально-медленная нормализация? Вот здесь получается тяжелый запуск:
Если передать управление процедуре:
Если его не удалить, то работать будет не правильно. (не правильно подсчитает количество колен) И вообще, он чаще мешается, чем помогает. Поэтому, приходится затрачивать дополнительное время на дополнительную проверку:
У вас основная логика выполняется:
И работает быстро. Но это - хардкорд до пятого колена. Можно ли как то сделать так, что бы работало так же быстро, Но можно было бы задавать произвольное количество колен?
1
|
|||||||||||||||||||||||||||
| 11.02.2019, 22:24 | |
|
Помогаю со студенческими работами здесь
20
Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Файловых типов данных Сортировка файловых записей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|