Як видалити папку з "нелегальними" символами?


5

Я підключив USB флеш-пам'ять в Mac і він отримав деякі небажані приховані папки. (Див. Питання Запобігання утворенню файлів MacOS. * І ._ * для профілактики.)

Тепер я хотів би видалити ці з мого диска, але я зіткнувся з проблемою. Всередині fseventsd папка - це вкладена папка, яка не відображається, якщо не вимкнути "Сховати захищені файли операційної системи" у параметрах папок. Потім я показую піктограму папки без назви, і спроба її видалення призводить до відсутності дій і помилок. Спроба відкрити її призводить до помилки:

E: fseventsd не доступний

Неправильний ім'я файлу, ім'я каталогу або синтаксис мітки томів.

Тому я подивився за допомогою командного рядка:

Command Prompt Hidden Folder View

Я повинен зізнатися, якщо б я не знав, що батьківська папка була з Mac OSX, я б сильно підозрював вірус, тому що ім'я папки відображається як смайлик в ASCII.

Мабуть, це символ "01" ASCII:

Old ASCII chart

Будь-які команди, які я видав у командному рядку, також призвели до різних помилок синтаксису. Я вирішив спробувати Powershell.

На жаль 1) я не дуже досвідчений з Powershell, і 2) він, здається, мають подібні труднощі з дивною назвою папки. Я отримав таку помилку в Powershell, що просто намагався перерахувати вміст батьківського каталогу:

Get-ChildItem: Недозволені символи в шляху.

Powershell Error

Як видалити цю папку?


я вважаю rmdir * не працює?
Paul

@ Paul На жаль, ні.
JYelton

Відповіді:


6

Я зміг "виправити" це, запустивши chkdsk /f на диску. Вона перетворилася fseventsd до файлу, який легко було видалено. Тим не менш, я не знаю, якщо це "виправити" було тому, що підпапка з'явилася зламаною в chkdsk, або якщо є щось інше на тому, що дозволило це працювати.

Пропонуючи це як відповідь у випадку, якщо він працює для інших.


chkdsk виявляє, що папка не була пов'язана з дійсним шляхом і виправляє проблему. (Протестовано створенням папки з символом `NT` на розділ NTFS з Ubuntu Linux)
Deltik

@JYelton fseventsd став файлом?
Louis

@Louis Це правильно. fseventsd був файлом у кореневому каталозі, а не папці, що містить нелегально назву підпапки. Він був порожнім, за винятком підпапки. Я б очікував, що підпапка стане файлом, але це не так.
JYelton

1

На жаль, існують деякі назви файлів, які Windows API не може обробити.

Якщо ви просто хочете видалити файли, ви можете перемістити будь-які файли, які ви хочете уникнути, а потім переформатувати флеш-диск.

Якщо ви хочете зберегти всі ваші файли, вам необхідно використовувати іншу операційну систему, щоб перейменувати їх - або поверніть на Mac, який ви використовували спочатку, або використовуйте Linux Live CD.

Інший варіант, який буде працювати - якщо ви не хочете переходити на інший комп'ютер або вимикати Windows - це встановити Linux всередині Virtualbox . Потім ви можете скористатися драйвером фільтра USB, щоб надати Linux гостьовій ОС контроль над USB-накопичувачем, і перейменувати файли в Virtualbox.


Я не маю проблеми з переформатуванням флеш-пам'яті, щоб очистити непотрібні папки, але якщо він був повний (64 Гб), потрібно було б певний час, щоб перемістити файли вперед і назад. Інша ОС, ймовірно, буде працювати чудово, але я в основному зацікавлений, якщо є спосіб з Powershell або якийсь інструмент Windows.
JYelton

Ви повинні знайти програму, яка не використовує функції API Windows - наприклад, CreateFile () і DeleteFile () - для взаємодії з файловою системою.
HDMI

У будь-якому випадку, так chkdsk виправлена ​​проблема, це швидше і краще рішення, ніж будь-які мої пропозиції.
HDMI

Насправді, навіть з linux, можливо, не вдасться видалити папку з нелегальним ім'ям файлу. Я тільки що мав ситуацію, коли мій сценарій створив папку, що містить %, \ , $. Отримавши доступ до папки, використовуючи різні версії utils і live-sticks, пов'язаних з ntfs Input/Output-Error, намагаючись видалити його, як корінь дав folder not empty. У моєму випадку єдиним рішенням було використання chkdsk під вікнами. (Урок: Будьте уважні під час запуску linux-скриптів на ntfs-розділ ...)
Legionair

1

Я впевнений, що є третій спосіб зробити це, принаймні під Windows XP.

Клацніть правою кнопкою миші на файлі в Провіднику. Ім'я файлу буде мати дивний замінник замість нелегального символу. Видалити його і закрити вікно властивостей. Він перейменовує файл. Принаймні у моєму досвіді.

Привітання


0

Я мав ту ж саму проблему і вирішив її таким чином:

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