Слишком длинный целевой путь Windows и решение проблемы

Привет всем! Хочу немного написать об одной интересной программе, которую открыл для себя совсем не давно и практически случайно. Можно сказать, что в повседневной работе именно её функционала мне и не хватало! А, как выяснилось, эта программа штатно идёт с операционной системой уже с 7-ой версии. А при дополнительных ухищрениях доступна даже в XP-шке.

Пользуясь моментом хочу порекомендовать отличный сервис обслуживание компьютерных сетей. Эти ребята оказывают множество услуг IT-тематики, в том числе монтаж СКС, разработку ПО и интеграцию сервисов.

Суть проблемы

Итак, опишу немного проблему, чтобы вы поняли, о чём идёт речь. Иногда случается такая ситуация, когда путь к каким-либо файлам в операционной системе Windows начинает превышать примерно 260 знаков и с папками или файлами, находящимися “глубже” этого ограничения поделать уже ничего нельзя без дополнительных танцев с бубнами. Будем полагать, что штатный проводник Windows (и многие другие программы) с такими большими путями работать не могут. Но есть ряд программ, которые могут и этим самым доставляют немало хлопот потом. Возможно вы видели нечто подобное:

Такое бывает при работе программ восстановления данных (та же R-Studio переваривает длинные пути, даёт сохранить на компьютер), или при сохранении веб-страниц, распаковке архивов и т.д. Причём удалить такие папки тоже может быть проблематично.

Решение

Способ 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

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

> subst K: "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"

Теперь в системе появится новый логический диск 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 приходится указывать:

> robocopy "D:\dir1" "C:\dir2" "a.txt" [прочие ключи]


Like this post? Please share to your friends:
Litl-Admin.ru

Comments:

Leave a Reply