Файлы с нелегальными именами файлов

Возможный дубликат:
Как заставить Windows XP переименовать файл со специальным символом?

У меня есть несколько файлов, чьи имена имеют такие символы, как «?» И ":", которые запрещены окнами. Я не уверен, как им удалось получить эти имена, поскольку я не могу вручную создавать файлы с этими именами. Они восстанавливаются с диска HFS, но инструмент, который их восстанавливал, работал под окнами, и, как я думаю, для этого они должны были быть подвержены тем же ограничениям при их создании.

В любом случае … теперь, когда они здесь, я могу их открыть, но я не могу перемещать, копировать, переименовывать или удалять их. Я хочу удалить несколько из них, но большинство из них хочу сохранить и скопировать на другой диск. Как я могу это сделать?

Вы не можете удалить файл или папку на томе файловой системы NTFS

Причина 5: Имя файла включает зарезервированное имя в пространстве имен Win32. Если имя файла включает зарезервированное имя (например, «lpt1») в пространстве имен Win32, вы не сможете удалить файл. Чтобы устранить эту проблему, используйте программу, отличную от Win32, для переименования файла. Вы можете использовать инструмент POSIX или любой другой инструмент, который использует соответствующий внутренний синтаксис для использования файла.

Кроме того, вы можете использовать некоторые встроенные команды, чтобы обойти типичные проверки зарезервированных имен Win32, если вы используете конкретный синтаксис для указания пути к файлу. Например, если вы используете команду Del в Windows XP, вы можете удалить файл с именем «lpt1», если вы укажете полный путь к файлу с помощью следующего специального синтаксиса:

del \\?\c:\path_to_file\lpt1 

Для получения дополнительных сведений об удалении файлов с зарезервированными именами в Windows NT и Windows 2000 щелкните следующий номер статьи базы знаний Майкрософт:

120716 Как удалить файлы с зарезервированными именами в Windows

Для получения дополнительных сведений об удалении файлов с зарезервированными именами в Windows XP щелкните следующий номер статьи базы знаний Майкрософт:

315226 Как удалить файлы с зарезервированными именами в Windows XP

Если вы откроете дескриптор файла с помощью типичного механизма CreateFile Win32, некоторые имена файлов зарезервированы для устройств DOS старого стиля. Для обратной совместимости эти имена файлов не разрешены, и их невозможно создать, используя типичные вызовы файлов Win32. Однако эта проблема не является ограничением NTFS.

Вы можете использовать программу Win32 для обхода типичных проверок имен, которые выполняются, когда файл создается (или удаляется), используя тот же метод, который используется для перемещения папок, глубже MAX_PATH. Кроме того, некоторые инструменты POSIX не подпадают под эти проверки имен.

Причина 6: Имя файла содержит недопустимое имя в пространстве имен Win32. Возможно, вы не сможете удалить файл, если имя файла содержит недопустимое имя (например, имя файла имеет конечное пространство или конечный период или файл Имя состоит только из пространства). Чтобы устранить эту проблему, используйте инструмент, который использует соответствующий внутренний синтаксис для удаления файла. Синтаксис «\? \» Можно использовать с некоторыми инструментами для работы с этими файлами, например:

 del "\\?\c:\path_to_file_that contains a trailing space.txt " 

Причина этой проблемы аналогична причине 4. Однако, если вы используете типичный синтаксис Win32 для открытия файла с конечными пробелами или периодами времени в его имени, конечные пробелы или периоды удаляются до открытия фактического файла. Поэтому, если у вас есть два файла в одной папке с именем «AFile.txt» и «AFile.txt» (обратите внимание на пробел после имени файла), если вы попытаетесь открыть второй файл с помощью стандартных вызовов Win32, вы откроете Первый файл. Аналогично, если у вас есть файл, чье имя просто «» (пробельный символ), и вы пытаетесь его открыть, используя стандартные вызовы Win32, вместо этого вы откроете родительскую папку файла. В этой ситуации, если вы попытаетесь изменить параметры безопасности в этих файлах, вы либо не сможете это сделать, либо можете неожиданно изменить настройки для разных файлов. Если это происходит, вы можете подумать, что у вас есть разрешение на файл, на самом деле имеющий ограничительный ACL.

Из моего ответа на аналогичный вопрос :

Отказоустойчивый метод :

Загрузите Linux LiveCD. Ubuntu имеет хорошую поддержку NTFS, а Linux обрабатывает гораздо больше символов с именами в именах файлов, чем Windows. Сценарий переименования perl может быть включен как команда rename системы, которая удобна для пакетного изменения многих файлов с одинаковым именем.


В командной консоли Windows с короткими именами файлов

Команда DOS DIR / X показывает короткие имена файлов, если они существуют в вашей системе .

 $ cmd c:\test> dir /x Volume in drive E is NUVOL Volume Serial Number is 80D3-A96D Directory of e:\tor\test 10/04/2009 05:15 AM <DIR> . 10/04/2009 05:15 AM <DIR> .. 10/04/2009 05:11 AM 0 CLIP-2~1.MOV clip-2009-10-01 21;26;00.mov 1 File(s) 0 bytes 2 Dir(s) 5,201,670,144 bytes free 

Если они существуют, команда REN переместит их на новое имя; Новое имя может быть новым (действительным) длинным именем файла.

 c:\test> ren CLIP-2~1.MOV "clip-2009-10-01_21-26-00.mov" 

Вот как это исправить.

Чтобы пакет обрабатывать все из них, вам необходимо: 1) захватить короткие имена файлов всех файлов, которые вы хотите переместить; 2) конвертируйте свое объявление в пакетный файл с соответствующими командами REN; И 3) запустить полученный пакетный скрипт. Если вам комфортно пользоваться perl (или sed / awk, python, что угодно), вы можете сами создать сценарий, или вы можете создать его вручную из списка, сделанного вами на шаге 1.

Но если DIR / X не показывает короткие имена файлов, ваша система отключена, и это решение не поможет.

Если предложение Идигаса не работает, вы всегда можете переместить их с помощью Live LiveCD, такого как Ubuntu . Он позволяет вопросительные знаки и двоеточия в именах файлов, поэтому у него не должно быть проблем с обработкой файлов.

Вам просто нужно сначала установить свой диск. Если XP является вашей единственной операционной системой, установленной на диске, ее можно, вероятно, установить из /dev/sda1 или /dev/hda1 зависимости от того, является ли это накопителем SCSI или IDE.

Для монтирования SCSI-диска (если используется NTFS):

  Mount -t ntfs-3g / dev / sda1 / mnt 

Для монтирования IDE-диска (работает NTFS):

  Mount -t ntfs-3f / dev / hda1 / mnt 

Если это тома FAT32, вы можете использовать vfat как тип ( -t vfat )

Попробуйте удалить Doctor (freeware) или delinvfiles (условно-бесплатное, но иметь больше возможностей), чтобы удалить файл с его коротким именем или именем UNC

Я использовал Windows Services для Unix для удаления таких файлов в прошлом.

Причина, по которой такие файлы могут быть созданы, заключается в том, что Windows поддерживает POSIX, поэтому NTFS была разработана для поддержки всех функций файловых систем POSIX. Однако обычные программы Win32 / Win64, которые используют обычный Windows API, не могут получить доступ к этим функциям. Для создания или удаления таких файлов вам необходимо использовать программу, написанную в native API или POSIX api.

По какой-то причине я обычно получаю больше удачи при перемещении / копировании / переименовании / (что-либо действительно) файлах из командной строки, чем при выполнении этого окна.

  • Как сделать это ослепительно очевидным, какое окно активно
  • Как подождать в пакетном скрипте?
  • Заменить основной жесткий диск Windows без переустановки?
  • Может ли XP загружать драйверы предварительной установки из любого другого места, кроме дискеты?
  • Windows XP PRO SP3 - остановить изменения ключа ключа безопасности, установленного неизвестной программой
  • «Ошибка чтения диска» при загрузке образа диска XP в VirtualBox
  • Добавить пункт меню в контекстное меню Windows только для определенного типа файла
  • Восстановление файлов из удаленного раздела
  • Как запланировать выполнение задачи при закрытии окон
  • Неужели SSD-диски не так долго работают с Windows XP, как с другими ОС?
  • Совместное использование локальной сети Windows XP: заблокирован 1 ГБ .zip-файл; Видя «Отказано в доступе» на копии?
  • Давайте будем гением компьютера.