Видаліть файл, що містить недійсні символи у Windows


16

У мене є кілька файлів, які містять символ двокрапки у назві файлу (наприклад, 1d67c0d23e859ed4a259749e4a720d9e: типовий мийок). Коли я намагаюся видалити їх із командного рядка за допомогою команди:

c:\backup> del /F *.*

Я отримую "Система не може знайти вказаний файл." для кожного файлу. Якщо я вказую окремий файл:

c:\backup> del /F "1d67c0d23e859ed4a259749e4a720d9e:default-sink"

Я отримую "Ім'я файлу, ім'я каталогу або синтаксис мітки тома невірно." Якщо я спробую використовувати rd у батьківській папці, яку я отримав

Як я можу видалити ці файли?


2
Ці файли були створені на розділі NTFS, коли я був завантажений в Linux. Гадаю, мені доведеться використовувати завантажувальний диск Linux, оскільки, здається, Windows не любить двокрапку з назви файлів на рівні драйвера файлової системи.
grom

Відповіді:


22

У статті Microsoft KB перелічено можливі способи видалення таких файлів за адресою:

http://support.microsoft.com/kb/320081

Я зазвичай використовую нативний метод API:

del "\\?\c:\path\1d67c0d23e859ed4a259749e4a720d9e:default-sink"

Згідно з:

http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

Символ :є зарезервованим NTFS. Народний метод API, який я згадав вище, є рекомендованим способом видалення таких файлів.


4
Це не працює для товстої кишки, оскільки вона трактується як названий потік даних.
psusi

Це працювало для моєї справи. файл, у якого виникли проблеми, містив кому,
Maher Fattouh

Дякую, це працювало для мене. Файл закінчувався через період. CA848D8F.
Мастро

1
Не працює. Ім'я мого файлу містить зворотну косу рису.
Pacerier

Якщо ім'я файлу містить :запит ОП, цей метод не працює. Використовуйте chkdskабо видаліть його з живого Linux.
Sourav Ghosh

15

Я думаю, ви можете спробувати ім'я 8.3?

del /F 1d67c0~1

Зауважте, що на накопичувачах NTFS ви можете явно відключити функціональність 8.3, тому, якщо це так, вам не пощастить у цьому варіанті. Щоб отримати ім'я файлу dir adir /x

Раніше був безкоштовний інструмент під назвою, delinvfileале вони перейшли і змінили його на умовно-безкоштовне


Як я міг це зробити на томі NTFS, створеному за допомогою formatкоманди з вимкненою підтримкою 8.3 імен?
користувач2284570

1
@ user2284570 цей метод не працюватиме. Коли я писав цю відповідь, у Microsoft було ввімкнено 8,3 імені, але в наші дні вона відключена за замовчуванням.
Марк Хендерсон

@MarkHenderson, моє ім'я файлу 7:2. Як я можу використовувати ім'я файлу 8.3 7:2?
Pacerier

@Pacerier дивіться мій попередній коментар. Цей метод не працюватиме в сучасних операційних системах. Windows XP або новішої версії.
Марк Хендерсон

13

Це працювало для мене:

  1. Побіг chkdsk /f
  2. Перезавантажений ПК
  3. Тоді я зміг вибрати та видалити файл

4

Закрийте всі відкриті файли, які зберігаються на диску, на якому містяться такі файли. Тепер відкрийте властивості накопичувача.

"Мій комп'ютер" -> "Клацніть правою кнопкою миші на цьому диску"> властивості

Потім перейдіть на вкладку " Інструменти " та натисніть " Перевірити зараз " під написом "Помилка перевірки".

введіть тут опис зображенняКлацніть тут для збільшення зображення

Це відключить ваш диск і сканує повний диск на помилки, з часом він видалить такі файли з незаконними іменами. По завершенні він покаже повідомлення про те, що деякі файли були виправлені.

Я успішно видалив такі файли зі свого зовнішнього жорсткого диска.


3

У мене є підсистеми для UNIX-додатків , встановлених на моєму комп'ютері (Windows 7). З оболонки Windows я можу створити файл із touch 1d67c0d23e859ed4a259749e4a720d9e:default-sink, а потім видалити йогоrm *:*


Утиліти, сумісні з POSIX (наприклад, SFU), можуть видаляти такі файли.
Ausmith1

@JoeInternet: sigghh Майкрософт видалив усі підсистеми, що не належать до Windows, з 2012 р. І вище.
користувач2284570

... але підсистема Unix знову повертається у програмі win 10.
user165568

1

Спробуйте перейменувати батьківську папку на один символ (a, 1 тощо), а потім спробуйте видалити батьківську папку. Якщо це не працює, перейдіть до першої дочірньої папки та перейменуйте її на один символ та спробуйте видалити ще раз. Я часто використовую цей метод для файлів з недійсними символами (не запитуйте мене, як вони створюються, тому що я не знаю) або для файлів, де шлях перевищує максимум (знову ж, не запитайте, як це відбувається).


1

7zip може видалити файли, на які Windows не вдається; Я використовував його в минулому, коли мав справу з надмірними іменами, але ніколи не пробував це у файлах із колонами. Вони зазвичай використовуються для позначення ADS.


Це тому, що 7-zip використовує cygwin.
користувач2284570

1
Не працює для обох моїх файлів. Перший файл має ім'я файлу із зворотною косою рисою, а другий - ім'я файлу з двокрапкою.
Pacerier

Ні, це тому, що 7-zip використовує API Windows замість оболонки. Він має ті ж обмеження, що і API: він вважає, що колонки вказують потоки.
користувач165568

7zip працював на мене
користувач1278519

1

У мене є система подвійної завантаження, і мені не працював не з вищезазначених відповідей. Якщо файл знаходиться на диску, встановленому вашою іншою ОС (для мене Ubuntu 16.04 LTS), ви можете скопіювати його видалити за допомогою іншої ОС;)


Це цілком розумно, коли він зв'язується (хоча це не може бути зроблено для інтернет-машини). Крім того, не потрібна вбудована подвійна завантажувальна система, оскільки ми можемо завантажувати живий дистрибутив для цього, наприклад, диск встановлення Fedora або Knoppix. ЗАРАЗ, слід бути обережним у такому середовищі, оскільки драйвер NTFS3G, який ми використовуємо для монтажу цієї системи, не поважатиме більшість дозволів / ACL-файлів Windows (саме тому це так ефективно для позбавлення від "застряглих" файлів) .
Спулер

0

Ви намагалися цитувати імена файлів? Дати точну команду, яку ви виконуєте, було б зручно.


Я додав його до точної команди, яку я біжу допитувати.
grom

0

Чи спробували ви використовувати підстановку? Наприклад, 'del 1d67c0d23e859ed4a259749e4a720d9e *. *' Може працювати.


Ви я спробував підстановку. Не пощастило
grom

1
Наступне, що мені здається, це завантажувати систему за допомогою linux cd (як системний cd-порятунок), встановити там гучність і спробувати видалити звідти. У цей момент ви можете отримати цікаві результати, адже хто знає, що насправді відбувається у файловій системі.
Майкл Коне

@MichaelKohne: Я думаю, що використання втілення Unix також є правильним рішенням. Але навіщо використовувати Linux? windows запускається як підсистема NT, і вже є POSIX / Unix NT підсистема.
користувач2284570

1
@ user2284570 - тому що, враховуючи той факт, що вони були створені з Linux, мабуть, що драйвер Linux NTFS дозволив щось, чого він не повинен мати, чого навіть оболонка Windows POSIX не зможе проскочити повз драйвер файлової системи. Набагато простіше завантажувати живий компакт-диск з Linux, видаляти помилковий файл та перезавантажувати назад до Windows.
Майкл Коне

@MichaelKohne: Ні, тому що шляхи UNC вже працюють (нативна підсистема) , а з підсистемами POSIX немає прямого доступу до альтернативних потоків даних, тому ви можете використовувати :всередині файлів.
користувач2284570

0

Ви спробували dir / X дізнатись справжнє ім'я 8.3, а потім спробували видалити це ім’я?

Чи може цей файл мати альтернативний потік даних? Ви можете подивитися на це, коли він буде шукати інструмент за адресою http://www.nirsoft.net/utils/alternate_data_streams.html, щоб побачити, що це може вам сказати (я ніколи не використовував цей інструмент, він з’явився, коли я шукав) .


0

У мене була папка з комою на ім’я. Я спробував кілька перерахованих вище пропозицій і не зміг змусити їх працювати.

Мені вдалося видалити папки із cygwin. Встановлення цієї програми не для всіх, але це зробить роботу.


0

Жодна з перерахованих вище пропозицій не працювала для мене. Я використовував WinRar. Відкрийте програму winrar, і ви побачите список файлів, де ви будете підозрювати файл "ім'я файлу" (створений вами як "ім'я файлу: some_text.txt". Перейменуйте файл у програму Winrar та надайте йому розширення (наприклад, .txt або .doc).

Поверніться до Провідника Windows, ви побачите "ім'я файлу .txt" (або документ). Видаліть його звідти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.