Как удалить папку с файлом NUL или слишком длинным путём в Windows
Содержание
Windows показывает папку. Выбираете её, нажимаете удалить. «Не удалось найти этот элемент».
То есть папка прямо перед нами, но операционная система решила сыграть в прятки. Прекрасно, блядь. Компьютерная версия «я в домике».
Если внутри оказался файл NUL, CON или слишком длинный путь, дело может быть в обработке имени. Для таких объектов в RAZE есть работа с расширенными путями Windows. Разберёмся без шаманства над системными настройками.
Почему файл NUL вообще вызывает проблемы
В Windows есть зарезервированные имена устройств: NUL, CON, PRN, AUX, COM1–COM9, LPT1–LPT9. Обычные файловые операции воспринимают их особым образом.
Если объект с таким именем появился после распаковки, переноса из другой среды или работы специального инструмента, Проводник может вести себя странно. Запись существует, а привычный способ обращения к ней не работает как ожидается.
Поэтому закрытие всех программ не обязательно поможет. Здесь препятствие может быть в имени, а не в приложении, которое держит файл.
Сами правила описаны у Microsoft.
А что не так с длинным путём
У традиционных интерфейсов Windows встречается предел MAX_PATH около 260 символов. Современная поддержка длинных путей зависит от API, настроек и самой программы. Это не единый запрет на всё, что длиннее.
Но достаточно нескольких вложенных папок с подробными названиями, и обычный инструмент может споткнуться. Особенно если каждый каталог называл человек, который очень хотел сразу рассказать всю историю проекта.
RAZE использует расширенные пути вида \\?\... там, где это нужно. Системные условия разобраны в документации Microsoft по длине пути.
Как не удалить лишнее
Сначала определите точную цель. Если внутри проблемной папки есть нужное, сохраните это отдельно. Рядом с NUL могут жить совершенно нормальные файлы, которые к конфликту с Windows отношения не имеют.
RAZE позволяет выбирать отдельные объекты. Если Проводник не даёт выделить проблемный файл, предварительный просмотр родительской папки поможет понять состав дерева. Но просмотреть папку и согласиться удалить её целиком — два разных решения.
В примерах ниже используется демонстрационный путь C:\Temp\raze-demo. Подставляйте свой проверенный адрес, не системный каталог.
Сначала получаем план
Скачайте официальный архив RAZE, распакуйте и откройте PowerShell в этой папке:
.\raze.exe -n "C:\Temp\raze-demo"
-n ничего не удаляет. Посмотрите объекты, препятствия и способ удаления. Для отдельного получения плана есть также --plan-only.
Особенно внимательно — к удалению навсегда. Корзина умеет работать не со всеми проблемными именами и расширенными путями. Если план говорит, что объект будет удалён без корзины, именно это и нужно оценить до подтверждения.
Теперь удаляем проверенную цель
Когда всё ненужное определено, а нужное сохранено:
.\raze.exe "C:\Temp\raze-demo"
Команда затрагивает выбранную папку с содержимым. Если убрать требуется один файл, укажите его точный путь. Не нужно жертвовать всем проектом ради победы над одной упрямой записью.
То же можно делать через raze-app.exe: добавить цель, изучить список и выполнить операцию. Для разового удаления установка меню Проводника не нужна.
Если проблема осталась
Посмотрите отчёт. Необычное имя может сочетаться с блокировкой процессом или ограничениями доступа. Тогда пригодится разбор занятых и неудаляемых файлов.
И ещё одна граница: «удалить навсегда» здесь означает обойти корзину. Это не обещание гарантированно стереть все следы данных с накопителя. Для таких задач нужны другие подходы.
Забирайте RAZE и начинайте с предварительного просмотра. Обычно разумнее сперва познакомиться с планом, а потом устраивать папке проводы.
Точная справка по режимам: RAZE 0.1.4.