Usuń plik zawierający nieprawidłowe znaki w systemie Windows

16

Mam niektóre pliki zawierające znak dwukropka w nazwie pliku (np. 1d67c0d23e859ed4a259749e4a720d9e: default-sink). Kiedy próbuję usunąć je z wiersza polecenia za pomocą polecenia:

c:\backup> del /F *.*

Pojawia się komunikat „System nie może znaleźć określonego pliku”. dla każdego pliku. Jeśli podam pojedynczy plik:

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

Otrzymuję komunikat „Nazwa pliku, nazwa katalogu lub składnia etykiety woluminu jest nieprawidłowa.”. Jeśli spróbuję użyć rd w folderze nadrzędnym, otrzymam

Jak mogę usunąć te pliki?

grom
źródło
2
Pliki te zostały utworzone na partycji NTFS, kiedy zostałem uruchomiony w systemie Linux. Chyba będę musiał użyć dysku rozruchowego systemu Linux, ponieważ wydaje się, że system Windows nie lubi dwukropków w nazwach plików na poziomie sterownika systemu plików.
grom
Powiązane: superuser.com/q/31587/320611
David Refoua

Odpowiedzi:

22

W artykule Microsoft KB wymieniono możliwe sposoby usuwania takich plików na:

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

Zwykle używam natywnej metody API:

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

Według:

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

Jest :to znak zastrzeżony w NTFS, natywna metoda API, o której wspomniałem powyżej, jest zalecanym sposobem usuwania takich plików.

Ausmith1
źródło
4
Nie działa to na dwukropek, ponieważ jest interpretowane jako nazwany strumień danych.
psusi
To zadziałało w mojej sprawie. plik, z którym miałem problem, zawierał przecinek,
Maher Fattouh
Dzięki, to zadziałało dla mnie. Plik zakończył się kropką. CA848D8F.
Mastro
1
Nie działa Moja nazwa pliku zawiera ukośnik odwrotny.
Pacerier
Jeśli nazwa pliku zawiera :to, o co poprosił OP, ta metoda nie działa. Użyj go chkdsklub usuń z linuksa na żywo.
Sourav Ghosh,
15

Chyba możesz wypróbować nazwę 8.3?

del /F 1d67c0~1

Pamiętaj, że na dyskach NTFS możesz jawnie wyłączyć funkcję 8.3, więc jeśli tak, to nie masz szczęścia dla tej opcji. Aby uzyskać nazwę pliku reżdir /x

Kiedyś istniało narzędzie o nazwie freeware, delinvfileale odeszły i zmieniły je na shareware / pay

Mark Henderson
źródło
Jak mogę to zrobić na woluminie NTFS utworzonym za pomocą formatpolecenia z wyłączoną obsługą nazw 8.3?
user2284570
1
@ user2284570 ta metoda nie będzie działać. Kiedy napisałem tę odpowiedź, Microsoft miał włączone 8.3 nazwy, ale obecnie jest ona domyślnie wyłączona.
Mark Henderson
@MarkHenderson, Moja nazwa pliku to 7:2. Jak używać nazwy 8.3 dla nazwy pliku 7:2?
Pacerier
@Pacerier zobacz mój poprzedni komentarz. Ta metoda nie działa na nowoczesnych systemach operacyjnych. Windows XP lub starszy.
Mark Henderson
13

To działało dla mnie:

  1. Biegł chkdsk /f
  2. Uruchomiono ponownie komputer
  3. Następnie mogłem wybrać i usunąć plik
JohnB
źródło
4

Zamknij wszystkie pliki, jeśli są otwarte, zapisane na dysku zawierającym takie pliki. Teraz otwórz właściwości dysku.

„Mój komputer” -> „Kliknij prawym przyciskiem myszy na tym dysku”> właściwości

Następnie przejdź do karty „ Narzędzia ” i kliknij „ Sprawdź teraz ” pod etykietą „Błąd sprawdzania”.

wprowadź opis zdjęcia tutajKliknij tutaj, aby powiększyć obraz

Spowoduje to odmontowanie dysku i przeskanowanie całego dysku w poszukiwaniu błędów, ostatecznie usunie takie pliki o nielegalnych nazwach. Po zakończeniu wyświetli komunikat informujący, że niektóre pliki zostały naprawione.

Pomyślnie usunąłem takie pliki z zewnętrznego dysku twardego.

Atul Vaibhav
źródło
3

Mam Podsystem aplikacji systemu UNIX zainstalowanych na moim komputerze (Windows 7). Z powłoki Windows mogę utworzyć plik za pomocą touch 1d67c0d23e859ed4a259749e4a720d9e:default-sink, a następnie usunąć go za pomocąrm *:*

Joe Internet
źródło
Narzędzia zgodne z POSIX (takie jak SFU) mogą usuwać takie pliki.
Ausmith1
@JoeInternet: sigghh Microsoft usunął wszystkie podsystemy inne niż Windows z 2012 i nowszymi wersjami.
user2284570
... ale podsystem unix powrócił do Win 10.
user165568,
1

Spróbuj zmienić nazwę folderu nadrzędnego na pojedynczy znak (a, 1 itd.), A następnie spróbuj usunąć folder nadrzędny. Jeśli to nie działa, przejdź do pierwszego folderu podrzędnego i zmień nazwę na jeden znak i spróbuj ponownie usunąć. Często używam tej metody do plików z nieprawidłowymi znakami (nie pytaj mnie, jak zostały utworzone, ponieważ nie wiem) lub do plików, których ścieżka przekracza maksimum (ponownie, nie pytaj, jak to się dzieje).

joeqwerty
źródło
1

7zip może usuwać pliki, których Windows nie potrafi; Używałem go w przeszłości, gdy miałem do czynienia z zbyt długimi nazwami plików, ale nigdy nie próbowałem tego na plikach z dwukropkami. Zwykle byłyby używane do oznaczania ADS.

Dentrasi
źródło
Wynika to z faktu, że 7-zip używa cygwina.
user2284570
1
Nie działa dla obu moich plików. Pierwszy plik ma nazwę pliku z odwrotnym ukośnikiem, a drugi plik ma nazwę pliku z dwukropkiem.
Pacerier
Nie, to dlatego, że 7-zip używa interfejsu API systemu Windows zamiast powłoki. Ma takie same ograniczenia jak API: uważa, że ​​dwukropki wskazują strumienie.
user165568,
7zip pracował dla mnie
10.10.19
1

Mam system podwójnego rozruchu i żadna z powyższych odpowiedzi nie zadziałała. Jeśli plik znajduje się na dysku zamontowanym przez inny system operacyjny (dla mnie Ubuntu 16.04 LTS), możesz go skasować, używając innego systemu operacyjnego;)

Ang Black
źródło
Jest to dość rozsądne, gdy jest się powiązanym (choć nie można tego zrobić na komputerze online). Również natywny podwójny rozruch nie jest wymagany, ponieważ możemy w tym celu uruchomić dystrybucję na żywo, taką jak dysk instalatora Fedory lub Knoppix. JEDNAK należy zachować ostrożność w środowisku takim jak ten, ponieważ sterownik NTFS3G, którego używamy do montowania tego systemu, nie będzie respektował większości uprawnień / list ACL systemu Windows (właśnie dlatego tak skutecznie pozbywa się „zablokowanych” plików) .
Spooler
0

Próbowałeś zacytować nazwy plików? Przydałoby się dokładne polecenie, które uruchomisz.

womble
źródło
Dodałem go do dokładnego polecenia, które uruchamiam, aby zadać pytanie.
grom
0

Czy próbowałeś użyć symbolu wieloznacznego? Na przykład „del 1d67c0d23e859ed4a259749e4a720d9e *. *” Może działać.

Michael Kohne
źródło
Próbowałem symboli wieloznacznych. Brak szczęścia
grom
1
Następną rzeczą, o której myślę, jest uruchomienie systemu za pomocą linuksowego dysku CD (jak system ratunkowy CD), zamontowanie tam woluminu i stamtąd usunięcie. W tym momencie możesz uzyskać interesujące wyniki, ponieważ kto wie, co naprawdę dzieje się w systemie plików.
Michael Kohne
@MichaelKohne: Myślę, że użycie implementacji ścieżki uniksowej jest również dobrym rozwiązaniem. Ale po co używać Linuksa? Windows działa jako podsystem NT, a już istnieje podsystem POSIX / Unix NT.
user2284570,
1
@ user2284570 - ponieważ biorąc pod uwagę fakt, że zostały one utworzone z Linuksem, wydaje się prawdopodobne, że linux NTFS zezwalał na coś, czego nie powinien mieć, czego nawet powłoka POSIX systemu Windows może nie być w stanie ominąć sterownika systemu plików. Znacznie łatwiejsze jest uruchomienie Live CD z Linuksem, usunięcie fałszywego pliku i ponowne uruchomienie systemu Windows.
Michael Kohne,
@MichaelKohne: Nie, ponieważ ścieżki UNC już działają (podsystem macierzysty) , aw przypadku podsystemów POSIX nie ma bezpośredniego dostępu do alternatywnych strumieni danych, więc można korzystać z :plików wewnętrznych.
user2284570
0

Czy próbowałeś znaleźć katalog / X w celu znalezienia rzeczywistej nazwy 8.3, a następnie próbowałeś ją usunąć?

A może ten plik może mieć alternatywny strumień danych? Możesz to sprawdzić w narzędziu http://www.nirsoft.net/utils/alternate_data_streams.html, aby zobaczyć, co to może ci powiedzieć (nigdy nie korzystałem z tego narzędzia, po prostu wyszło, kiedy szukałem) .

Michael Kohne
źródło
0

Miałem folder z przecinkiem w nazwie. Wypróbowałem kilka powyższych sugestii i nie udało mi się ich uruchomić.

Udało mi się usunąć foldery za pomocą cygwin. Zainstalowanie tej aplikacji nie jest dla wszystkich, ale wystarczy.

Rich MacDonald
źródło
0

Żadna z powyższych sugestii nie działała dla mnie. Użyłem WinRar. Otwórz winrar, a zobaczysz listę plików, w której pojawi się podejrzany plik „nazwa pliku” (który został utworzony przez ciebie jako „nazwa pliku: some_text.txt”. Zmień nazwę pliku w Winrar i podaj mu rozszerzenie (jak .txt lub .doc).

Wróć do Eksploratora Windows, zobaczysz „filename .txt” (lub doc). Usuń go stamtąd.

Prashant Lamba
źródło