Файлы с нелегальными именами файлов
Возможный дубликат:
Как заставить Windows XP переименовать файл со специальным символом?
У меня есть несколько файлов, чьи имена имеют такие символы, как «?» И ":", которые запрещены окнами. Я не уверен, как им удалось получить эти имена, поскольку я не могу вручную создавать файлы с этими именами. Они восстанавливаются с диска HFS, но инструмент, который их восстанавливал, работал под окнами, и, как я думаю, для этого они должны были быть подвержены тем же ограничениям при их создании.
В любом случае … теперь, когда они здесь, я могу их открыть, но я не могу перемещать, копировать, переименовывать или удалять их. Я хочу удалить несколько из них, но большинство из них хочу сохранить и скопировать на другой диск. Как я могу это сделать?
- Виртуальный драйвер CDR
- Как можно сделать брандмауэр Windows XP для блокировки определенного приложения?
- Как узнать, какой прокси-сервер я использую?
- Как установить заголовок CMD в текущий рабочий каталог в Windows XP
- Программное обеспечение для отображения времени автономной работы ноутбука?
- Как долго Microsoft будет поддерживать Windows XP Professional?
- Сжимает ли файлы в XP замедляет работу?
- Как установить английский (Великобритания) в качестве языка редактирования по умолчанию в Word 2007?
- Как проверить код выхода последней команды в пакетном файле?
- Windows XP застрял на экране загрузки
- Пакетное преобразование .doc в .docx (и эквивалентное для других офисных форматов)?
- Зачем мне нужно несколько символов EOF (CTRL + Z)?
- Остановить iTunes от загрузки каждый раз, когда я подключаю iPhone
Вы не можете удалить файл или папку на томе файловой системы 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.
По какой-то причине я обычно получаю больше удачи при перемещении / копировании / переименовании / (что-либо действительно) файлах из командной строки, чем при выполнении этого окна.