Если полный путь к файлу превышает 254 символа, то удалить его обычным способом не получится. Система предложит переместить файл в другую директорию, путь к которой будет короче.
Однако при попытке переместить файл мы столкнёмся с той же проблемой. Windows не может переместить файл, потому что путь к нему слишком длинный.
Можно попробовать удалить файл с помощью Total Commander, там полный путь может достигать 259 символов, однако, в моём случае проблема оказалась слишком сильна, полный путь к файлу превысил и это значение.
Можно установить 7-Zip, и запаковать файл в путь покороче, установив опцию "удалять исходник после архивации". Архиватор умеет работать с такими длинными названиями
Ещё один способ, воспользоваться встроенной утилитой subst для создания виртуального диска, тем самым сократив полный путь к файлу. который нужно удалить.
Утилитой пользоваться в командной строке просто, достаточно указать два аргумента: имя диска и путь к папке с неудаляемым файлом. Выполняю:
subst Z: "B:\web\daily\web\drupal8\sites\internet-lab.ru\files\photo"
Весь этот длинный путь к директории с файлом сократился до одного диска Z.
Теперь ненужные файлы можно просто удалить с диска Z. ?
Виртуальный диск удаляется командой:
subst Z: /d
Добавка 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