Максимальная длина имени файла

Решение

Способ 1. Subst

Раньше я делал так – с использованием команды subst создавал новую точку монтирования в виде логического диска и прятал за него часть длинного пути. Иной раз повторял раз по 5, чтобы добраться до самого дна и начать удалять эти папки. Ведь удалить их штатным способом не представлялось возможным.

Всякие там Unlocker, Far, Total Commander и прочие – не помогали.

Допустим имеем вот такой путь:

> D:\verylongpathname\someofthepath\nameofthelongfilename\yetanotherlongdir\bla-bla-bla-bla-path1\bla-bla-bla-bla-path2\bla-bla-bla-bla-path2\Documents and Settings\verylognusername\Application data\Local Settings\Saved Pages\LongDirName\Сохранённые страницы\Удалить потом\Никогда не удалять!!!!!!!\Последняя папка\Новая папка\Новая папка (1)\Новая папка (2)\Новая папка (4)\Окончательный отчёт\Последняя версия\Удалить\Отправлено\С чёрной флешки\Скинуть\От Димона\Присланное\Документы\Новый документ Microsoft Word.doc

Выполним ряд команд:

Теперь в системе появится новый логический диск K:, внутри которого будет остаток пути “LongDirName\Сохранённые страницы\Удалить потом\Никогда не удалять!!!!!!!\Последняя папка\Новая папка\Новая папка (1)\Новая папка (2)\Новая папка (4)\Окончательный отчёт\Последняя версия\Удалить\Отправлено\С чёрной флешки\Скинуть\От Димона\Присланное\Документы\Новый документ Microsoft Word.doc”

Но и его удалить не получится, нужно делать новую точку монтирования:

> subst L: «K:\LongDirName\Сохранённые страницы\Удалить потом\Никогда не удалять!!!!!!!\Последняя папка\Новая папка\Новая папка (1)\Новая папка (2)\Новая папка (4)\Окончательный отчёт\Последняя версия\Удалить\Отправлено\С чёрной флешки\Скинуть»

Появится новый диск L:, внутри которого остались “От Димона\Присланное\Документы\Новый документ Microsoft Word.doc”

Содержимое L: можно удалить, так как путь уже не такой длинный, затем удалить сам L:

> subst L: /d

Теперь можно удалить содержимое K:, а затем и сам K:. Ну и остаток пути теперь тоже удалится. Вот так раньше делал я.

Муторно, не правда ли? Не то слово, иной раз приходилось занимать 5-6 букв, чтобы добраться до низа. А там ещё папки ветвились.

Способ 2. Команда robocopy

Совершенно случайно натолкнулся на эту команду. В Windows 7 уже идёт штатно, существует и в более современных версиях. Это просто бомба! Богатый функционал, позволяющий как делать задания на копирования и синхронизацию каталогов, так и, при определённом баловстве ключами, удалять вот такие длинные каталоги. Есть ключи для того, чтобы сделать “зеркало” каталога. Так вот, если сделать зеркало пустого каталога, то целевой каталог тоже станет пустым. Пример такой:

D:\empty – пустой.

Мы хотим отрезать часть пути из нашего примера до “D:\verylongpathname\someofthepath\”. Выполним команду:

> robocopy «D:\empty» «D:\verylongpathname\someofthepath\nameofthelongfilename\» /MIR

MIR – обозначает в данном случае Mirror. И наш последний каталог nameofthelongfilename будет содержать то же самое, что и каталог D:\empty – т.е. пустой. Его можно и удалить при желании.

Посмотрите хелп по этой программе, она реально обладает богатым функционалом. При помощи её я копировал файлы на тот же диск, оставляя прежние атрибуты времени. А как мы смотрели в предыдущей статье, копирование файла создаёт новую запись MFT и у неё будут текущие атрибуты времени (а иногда нужно оставить прежние).

Правда при копировании одиночных файлов немного было неудобно – синтаксис непривычный, ибо команда оперирует не файлами как copy, xcopy и т.д, а каталогами. И чтобы скопировать конкретно файл a.txt из каталога D:\dir1 в C:\dir2 приходится указывать:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *