Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Как найти файлы, путь к которым превышает 256 символов?

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

WolfSkull1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как найти в выбранной папке все файлы, путь к которым превышает 256 символов?
 
Может программа какая есть? Нужно что бы программы выдала именно список таких файлов, переименовывать планируется вручную.
 
Папок много, файлов много, это нужно сделать перед переброской папок в другое место. В общем нужно как описал выше.

Всего записей: 79 | Зарегистр. 05-06-2005 | Отправлено: 22:40 18-08-2010
BVV63



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WolfSkull1
Вы уверены, что вам нужен путь? Ограничение ведь на полное имя файла (путь + имя).
Ну такое, половинчатое решение. Выполните такую команду:

Код:
For /F "Tokens=* UseBackQ" %%0 In (`Dir "Раздел\*.*" /A-D /B /O:N /S`) Do Echo %~F0>>"Файл"

Где "Раздел" - имя логического раздела, "Файл" - имя файла, куда будет перенаправлен вывод.
В файл будут перенаправлены полные имена.
Файл дважды откроете каким-нить редактором или просмотрщиком, отступите в одной копии так, чтобы левая граница экрана была на 256 символов от начала, и пролистаете. Сразу увидите, если полное имя файла превысит 256 символов, а в другой копии программы (чтобы не смещать границу в первой) найдёте этот файл.
 
Добавлено:
Впрочем, вместо "Раздел" (в цикле For) можно и конкретную папку указать.

Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 08:09 19-08-2010 | Исправлено: BVV63, 08:10 19-08-2010
BVV63



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WolfSkull1
Если ещё актуально. При помощи здешних батнописцев состряпал такой код:

Код:
ChDir .>C:\1.Txt
For /F "Tokens=* UseBackQ" %%0 In (`Dir "E:\*.*" /A-D /B /O:N /S`) Do Call :0 "%%~0"
Exit
:0
Set Count=0
Set Var=%~1
:1
Set Var=%Var:~0,-1%
Set /A Count+=1
If "%Var%" NEq "" GoTo :1
If %Count% Gtr 256 1>>C:\1.Txt Echo %~F1
Exit /B

В цикле у меня E:\, замените на свой путь. В двух местах у меня C:\1.Txt (файл, в который будут складываться имена файлов с полным именем длиннее 256 символов), замените на свой.
Если Вам всё-же нужен ИМЕННО путь, то в предпоследней строке замените %~F1 на %~P1.

Цитата:
Папок много, файлов много

И впридачу с длиннющими именами . Очень долго будет работать, может сутки.

Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 12:21 20-08-2010 | Исправлено: BVV63, 12:23 20-08-2010
vvsco



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BVV63

Цитата:
И впридачу с длиннющими именами . Очень долго будет работать, может сутки.

Конечно долго! Я в ужасе (если не сказать конкретнее)!
А все потому, что задача была

Цитата:
Как найти в выбранной папке все файлы, путь к которым превышает 256 символов?

а в вашем решении зачем-то сначала скурпулезно находятся длины имен всех файлов, и только потом - само решение.
Вот так будет попроще, ну и значительно быстрее:

Код:
Set tDir=I:\Data
Set MaxLen=256
 
SetLocal EnableDelayedExpansion
 
For /F "Tokens=* UseBackQ" %%i In (`Dir "%tDir%\*.*" /A-D /B /O:N /S`) Do (
    Set iStr=%%i
    Set iStr=!iStr:~%MaxLen%!
    If NOT [!iStr!]==[] (
        Echo "%%i">>%OutFile%
    )
)

Основная идея: не считать длины имен, а сразу находить те, которые длиннее 256 символов.
185953 файла обработал за, примерно, 2-3 минуты.

Всего записей: 3 | Зарегистр. 05-03-2009 | Отправлено: 04:36 26-09-2012 | Исправлено: vvsco, 04:47 26-09-2012
karbiztropandus

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ставите сборку total commander ultima prime (free)  САЙТ   tcup.pl
в нем кнопку поиск, в нем поставив путь для поиска, и во вкладке ПЛАГИНЫ выбираете = FILEX, СВОЙСТВО = ДЛИНА ПОЛНОГО ПУТИ, ОПЕРАЦИЯ = >, ЗНАЧЕНИЕ = 255 И НАЖИМАЕТЕ ИСКАТЬ.
КОГДА НАЙДЕТ НАЖИМАЕТЕ НАПРИМЕР  = ВСЕ НА ПАНЕЛЬ И МОЖЕТЕ ДЕЛАТЬ С НИМИ ГРУППОВЫЕ ОПЕРАЦИИ ИЛИ ПООДИНОЧНЫЕ (ВЫРЕЗАТЬ, УДАЛИТЬ, ПЕРЕИМЕНОВАТЬ И ТД)
ВСЕ ПОНЯТНО И БЫСТРО.

Всего записей: 5 | Зарегистр. 06-08-2015 | Отправлено: 13:26 16-08-2015
Boris Smirnov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
karbiztropandus
 
Не обязательно сборка Ultima Prime - лишь бы был плагин filex установлен.
 
А вот теперь самое интересное. Хотелось бы после сброса всех таких файлов с полным путем выше 255 во временную панель переименовать их.
 
И переименовать их таким образом, чтобы полный путь был менее 255 символов за счет обрезки крайних правых символов в имени. Как это сделать?
 
В справке TC нашел вариант обрезки только имени файла - [N1-255]. А как обрезать имя с учетом полного пути к нему?
 
Пробовал также вариант переименования: Name: [1-253] Extension: [E]
 
Но TC сообщает, что не может переименовать файлы. Создается ощущение, что TC не может переименовывать файлы по Ctrl-M. если длина полного пути к ним больше 255 символов. Это так? И как быть?
 
Наверно можно было бы и сторонними программами переименования воспользоваться, но тогда описания файлов из descript.ion потеряются.

Всего записей: 495 | Зарегистр. 04-11-2001 | Отправлено: 14:57 17-08-2015 | Исправлено: Boris Smirnov, 15:12 17-08-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Как найти файлы, путь к которым превышает 256 символов?


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru