Перейти к основному содержанию

Windows — удалить файл с длинным именем

Windows

Если полный путь к файлу превышает 254 символа, то удалить его обычным способом не получится. Система предложит переместить файл в другую директорию, путь к которой будет короче.

win

Однако при попытке переместить файл мы столкнёмся с той же проблемой. Windows не может переместить файл, потому что путь к нему слишком длинный.

win

Можно попробовать удалить файл с помощью Total Commander, там полный путь может достигать 259 символов, однако, в моём случае проблема оказалась слишком сильна, полный путь к файлу превысил и это значение.

win

Можно установить 7-Zip, и запаковать файл в путь покороче, установив опцию "удалять исходник после архивации". Архиватор умеет работать с такими длинными названиями

Ещё один способ, воспользоваться встроенной утилитой subst для создания виртуального диска, тем самым сократив полный путь к файлу. который нужно удалить.

win

Утилитой пользоваться в командной строке просто, достаточно указать два аргумента: имя диска и путь к папке с неудаляемым файлом. Выполняю:

subst Z: "B:\web\daily\web\drupal8\sites\internet-lab.ru\files\photo"

win

Весь этот длинный путь к директории с файлом сократился до одного диска Z.

win

Теперь ненужные файлы можно просто удалить с диска Z. ?

Виртуальный диск удаляется командой:

subst Z: /d

win

Добавка 1

В проводнике Windows 10 можно включить поддержку длинных путей:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1

После перезагрузки проводник должен обрести суперспособность удалять файлы с длинными путями.

Добавка 2

Можно попытаться удалить файл в пространстве имён файлов Win32:

del "\\?\C:\long-path\file.xxx"

Добавка 3

​Утилита  robocopy умеет работать с длинными путями:

mkdir dir_for_del
robocopy dir_for_del long_path_file_dir /MIR
rmdir dir_for_del
rmdir long_path_file_dir

Теги

 

Похожие материалы

Port-forwarding перенаправление портов в Windows

Начиная с Windows XP в операционной системе Windows имеется встроенная возможность перенаправления сетевых портов — port-forwarding. Более того, любое входящее TCP соединение можно перенаправить не только на другой порт, но и на другой IP адрес.

Теги

MySQL 8 — mysqldump в командной строке

Разрешаем запускать mysqldump в командной строке. MySQL 8 установлен в Windows Server 2016. Понадобилось мне как-то написать скрипт для резервного копирование баз mysql. Всё что нужно сделать, это отредактировать переменную PATH.

Теги