Иногда файл не получается удалить. Ниже несколько способов удалить неудаляемое. Не буду писать как сделать это самое — неудаляемое, оно как-то само возникает.
Неудаляемым может быть:
- Файл с длинным полным путём.
- Файл с пробелом на конце.
- Файл с двумя точками на конце.
- Файл с недопустимым символом в названии.
Удалить файл с длинным именем
Я уже описывал способ удаление файла с длинным именем.
Windows — удалить файл с длинным именем
7-Zip
Заархивировать файл с удалением источника с помощью архиватора 7-Zip:
robocopy
Утилита умеет работать с длинными путями:
mkdir dir_for_del
robocopy dir_for_del long_path_file_dir /MIR
rmdir dir_for_del
rmdir long_path_file_dir
subst
С помощью subst к папке с файлом:
subst Z: "C:\long-path\photo"
Теперь ненужные файлы можно просто удалить с диска Z. Виртуальный диск удаляется командой:
subst Z: /d
Поддержка длинных имён в проводнике
Ещё один способ, включить в проводнике Windows 10 поддержку длинных путей:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1
После перезагрузки проводник должен обрести суперспособность удалять файлы с длинными путями.
Удалить в пространстве имён файлов Win32
Можно попытаться удалить файл в пространстве имён файлов Win32:
del "\\?\C:\long-path\file.xxx"
Удалить файл с пробелом на конце
Снова на помощь приходит конструкция:
del "\\?\C:\long-path\file.xxx "
Удалить файл с двумя точками на конце
Снова нам поможет:
del "\\?\C:\long-path\file.."
Удалить файл с недопустимыми символами
В Linux можно создать файл с недопустимым символом в названии, например, "my*file.txt". Такой файл не удаляется в Windows. Поможет chkdsk:
CHKDSK C: /F /R
После перезагрузки chkdsk отработает и поместит файлы с недопустимыми символами в скрытую папку вида found.000, файлы там будут переименованы.