Как удалить (недействительные) файлы с двоеточием в их имени под Windows?

14

У меня на диске Windows довольно большое количество файлов с двоеточием в названии. (Это произошло после распаковки некоторых архивов Unix.)

Когда я пытаюсь удалить их, Windows (XP) жалуется, что файл не существует, и отказывается удалить его. Это происходит при попытке удалить или переименовать его из проводника или командной строки. Тем chkdskне менее, не жаловаться на эти файлы, ни исправить проблему.

Есть идеи как от них избавиться?

Ханс-Петер Стёрр
источник
Это позволит вам переименовать их или переместить в другое место? Если вы можете переместить их, попробуйте поместить их все в один каталог, затем удалите этот каталог.
nhinkle
Технически они действительны, это Windows Explorer, который является недопустимым файловым менеджером с особыми потребностями.
Алексей Аверченко

Ответы:

7

Вы можете использовать этот синтаксис ( для Microsoft KB 320081 ):

del "\\?\c:\path_to_file\bad:name.ext"

См. Также этот вопрос об ошибке сервера на ту же тему: «Удалить файл, содержащий недопустимые символы в Windows».

Я думаю, что старые утилиты sysinternals "ntfsdos" могли также удалять / переименовывать эти файлы, но они больше не доступны после приобретения MS.

Майкл
источник
@ Hello71 (для @Ruggle Humsteader) - новые пользователи не могут комментировать, они могут только отвечать (им в настоящее время для этого нужно 50 точек повторения: superuser.com/faq ). Однако они могут комментировать свои вопросы и ответы. (Точно так же другие новые пользователи не будут смущены вашим запросом.)
Майкл
Как бы вы сделали такой файл из Windows?
cutrightjm
@ekaj - файл может быть создан с использованием другой ОС. Создайте скриншот в Ubuntu, в имени файла есть двоеточия. Затем откройте его в Windows - это не сработает.
SPRBRN
@rxt Я в курсе. Я хочу сказать, что если вы можете удалить это, вы, вероятно, можете сделать это как-нибудь.
cutrightjm
3
у меня не работает в Windows 7
Populus
8

Вы можете попробовать загрузиться с Ubuntu Live CD и удалить его оттуда.

Tofystedeth
источник
Вчера я сохранил скриншот в Ubuntu, затем попытался открыть его в виртуальной машине Windows. Он отказался открыть, плохой тип файла или что-то. Затем я понял, что это может быть двоеточие в имени файла, которое я не мог удалить в Windows. Я поменяю имя в Nautilus, и тогда я смогу открыть файл.
СПРБРН
5

Закройте все файлы, если они открыты, которые сохранены на диске, который содержит такие файлы. Теперь откройте свойства диска.

«Мой компьютер» -> «Щелкните правой кнопкой мыши на этом диске»> Свойства

Затем перейдите на вкладку « Инструменты » и нажмите « Проверить сейчас » под меткой « Проверка ошибок».

[Нажмите здесь для изображения] ()

Это размонтирует ваш диск и проверит весь диск на наличие ошибок, в конечном итоге удалит такие файлы с недопустимыми именами. По окончании будет показано сообщение о том, что некоторые файлы были исправлены.

Я успешно удалил такие файлы с моего внешнего жесткого диска.

Атул Вайбхав
источник
Я хотел бы, чтобы он показал вам список того, что он собирался исправить, но это работало для меня в Windows 8.1.
ToastyMallows
Первое, что помогло мне после 20 попыток. Это использует chkdsk, который исправляет много вещей.
oshell
1

Вы можете легко сделать это в командной строке (CMD) без каких-либо модных программ.

  1. Переименуйте файл / папку, используя старые короткие обозначения (например, для имени файла, FILENA ~ 1) и. Чтобы получить обозначение, перейдите в каталог, содержащий папку / файл с недопустимым именем, и введите:

    реж / х

  2. Переименуйте в правильное имя, используя:

    ren FILENA ~ 1 fileName

  3. Теперь удалите действительный файл / папку в CMD или в проводнике Windows:

    del fileName

ricardo3889
источник
0

Чтобы исправить это в Windows 7:

chkdsk C:/r
tpbapp
источник
0

Если ничего не помогает, вам может потребоваться изменить имя непосредственно в NTFS.

Я сделал это успешно с Active @ Disk Editor . Действовать с осторожностью.

  • открыть программу
  • выберите Исследовать мой компьютер
  • найди свой файл
  • выберите Inspect File Record на панели кнопок или в контекстном меню
  • включите параметр «Разрешить редактирование содержимого» в раскрывающемся меню «Редактировать» или в контекстном меню.
  • найдите имя в столбце Unicode и щелкните по нему, перезаписав плохие символы хорошими, такими как символ или тире. Вспомните, что и как вы переименовали, это понадобится вам на следующем шаге.
  • вернуться на вкладку «Мой компьютер»
  • выберите родительский каталог файла в виде дерева
  • выберите Inspect File Record на панели кнопок или в контекстном меню
  • в древовидном представлении слева найдите атрибут $ A0 (выделен жирным шрифтом), откройте его, найдите $ INDEX_ALLOCATION, Запуск данных, Первый кластер, щелкните значение, оно должно быть интерактивным.
  • найдите имя и отредактируйте его так же, как в предыдущем шаге. Возможно, вам придется прокрутить немного вниз, чтобы найти его, если в каталоге много файлов.
  • если вы уверены, что случайно не перезаписали другие данные, нажмите «Сохранить». В противном случае закройте вкладку, не сохраняя изменений, и осторожно сделайте все снова.
  • перезагрузка.

Если файл или каталог по-прежнему недоступны, попробуйте chkdskсейчас.

пользователь
источник
-2

Другой альтернативой, которую вы можете попробовать, является использование CygWin , оболочки bash для Windows. Это позволит вам применять команды UNIX к вашим папкам DOS.

Дейв
источник
1
Если вы регулярно работаете с unix-файлами на компьютере с Windows, всегда полезно установить Cygwin. В противном случае вам лучше подойдет загрузка и удаление файла с live-компакт-диска linux, когда возникнет такая ситуация.
Марникс А. ван Аммерс
5
К сожалению, я пробовал Cygwin, и это не помогает. 8- {Даже cygwin не может удалить файлы.
Ганс-Петер Стёрр
6
Инструменты cygwin по-прежнему используют Windows API для удаления файлов. Если Windows API отклоняет имя файла, из Windows ничего нельзя сделать стандартными файловыми инструментами. Я также рекомендую получить доступ к файловой системе из альтернативной ОС.
дольмен
Я только что попытался получить доступ к файлу с двоеточиями на диске ext3 с помощью Cygwin, и даже это не работает.
Лоран