Folder utworzony przez pomyłkę nie da się usunąć

Pomyliłem się w pliku .exe
zamiast

_DATA..\

napisałem

_DATA..

Windows utworzył folder o nazwie

_DATA..

którego nie mogę usunąć.

Explorer wyświetla pusty folder, ale nie potrafi go otworzyć.
Próba zmiany nazwy wyświetla że folder nie istnieje
a próba wykasowania kropek na końcu wyświetla że albo nie może zmienić rozszerzenia, albo nie istnieje taki plik.
Sam Explorer nie wie czy to jest plik czy folder.

Próba usunięcia lub zmiany nazwy w Unlocker i ioBit Unlocker kończy się „nie mogę” , a nazwa folderu jest odczytywana jako _DATA (bez kropek).

Nie mam pomysłu, co dalej próbować.

DATA folder

Spróbuj: DirectoryFixer - Freeware to Delete Undeletable Files in Windows

Zajrzyj tu.

czytaj tekst zaczynajacy sie od
" Solution: When you call RemoveDirectory, make sure that you prefix the path with the string "\\?\ ".

Rzecz dotyczy plików lub katalogów zawierajacych w nazwie kropke lub spację.

Windows 11 wydaje się być odporny na takie pomyłki i folder nie powstaje (usuwane są 2 kropki).

Uruchom z pena jakiegoś Linuxa live i skasuj.

Zobacz windows 7 - delete folder with .. (double dot) in its name - Super User

czyli

rd \\?\c:\users\whatever\wherever\blah..

lub
dir /X i użyj nazwy skróconej, jeżeli się pojawi.

1 polubienie

Drobna dygresja.
To juz było.

Dzięki wielkie.
Użycie skróconej nazwy _DATA~1 pomogło.
Chociaż Windows wyświetlał, że folder jest pusty, nie był pusty. Były w nim dwa podfoldery i kilka plików.
czyli

ren _DATA~1 _DATA

odblokowało folder bez kasowania plików w nim.

Trafiłem na ekspertów, to może wyjaśnię, skąd ten błąd i zapytam dalej.
Czy muszę zakładać nowy temat?

Próbuję przerobić grę, aby przy pierwszym uruchomieniu tworzyła folder danych nie w dokumentach, tylko lokalnie, tam gdzie jest zainstalowana.
Wtedy będę miał dostęp do tych plików z menu gry.

Znalazłem w . exe ścieżkę i nazwę folderu, ale nawet jeśli zamienię ją na

..\Userdata

to folder danych jest tworzony powyżej folderu dokumenty, ale dalej to jest relatywny link, zależny od lokalizacji dokumentów.

Zmienna systemowa %__CD__% nie daje nic, jest interpretowana jako zwykły tekst i tworzony jest folder o nazwie

%__CD__%

w dokumentach.

Wcześniej plik exe musi pobierać lokalizację dokumentów, i zmieniać CD na dokumenty, a ja muszę to zamienić na „tutaj”, na

.

dlatego że sama gra może znajdować się w dowolnym miejscu.

Czego powinienem szukać w kodzie, jakiej sekwencji, aby znaleźć moment pobierania lokalizacji dokumentów?

Modyfikowanie exe może przynieść nieoczekiwane rezultaty. W tym przypadku użyłbym junction - dowiązanie do folderu

Po utworzeniu folderu przez grę w dokumentach, wyłączasz grę, przenosisz folder tam gdzie chcesz a w dokumentach tworzysz junction o takiej samej nazwie.

To rozwiązanie bardzo pośrednie, dalej zależne od lokalizacji dokumentów i dodatkowo wymaga kolejnego składnika, który może przestać działać, zostać wyłączony przez system…

Przy modyfikacji exe najważniejsze jest zachować tą samą ilość bajtów i nie zmieniać rzeczy których nie rozumiemy.
Czyli w moim przykładzie, podmieniam tylko dane tekstowe.

Na pewno w którymś miejscu jest instrukcja pobierania adresu (tego nie zobaczymy bez debuggera, ale tak daleko nie wchodzę),
a po niej powinna być jakaś systemowa nazwa, lokalizacja folderu dokumentów.
i tego właśnie szukam.

Ten adres może być podany jako domyślny np.

C:\users\user\

i po nim systemowa nazwa folderu dokumenty.
Jak może być ona zapisana?

Zgadzam się, że należy zachować tą samą ilość bajtów, ale niestety nie za wiele pomogę, moje doświadczenie z hakowaniem exeków jest znikome.

Dziękuję za pomoc i dodatkowo podam jedną metodę, wymaga ona jednak programu Bulk Rename Utility.
Zaznaczamy w okienku kłopotliwy folder
i tu jest kilka sposobów

  1. Remove - w polu Chars wpisujemy kropkę i usunie wszystkie kropki w nazwą zaznaczonych folderów i plików
  2. Replace - w polu From wpisujemy kropkę, pole To zostawiamy puste, lub wpisujemy na co kropka ma być zamieniona (na przykład na _)
  3. Możemy użyć Name - Remove, usunie to całą nazwę, a w polu Add wpisujemy nową nazwę.
  4. W polu Remove zaznaczamy Sym. - usunie to z nazwy wszystkie symbole (nie litery i nie cyfry).

Ważne: w oknie Filters ma być zaznaczone tylko Folders, a pozostałe opcje wyłączone, szczególnie Subfolders - wtedy by zmienił nazwy wszystkich podfolderów poniżej zaznaczonego.

Dzięki wielkie! Kilka dni temu jeden z pracowników przesłał mi pocztą plik, którego po zapisaniu nie mogłem w żaden sposób skasować. Oczywiście nazwa pliku była w ciul długa, a na końcu standardowo kropeczka. Żadne unlockery, czy próby usunięcia pliku przez wiersz poleceń oraz PowerShella nie zadziałały. Usunięcie pliku z poziomu jakiegoś LiveCD np. Linuxa w moim przypadku odpadało, bo plik nie był widoczny bezpośrednio na filesystemie komputera, katalog synchronizuje się z serwerem poprzez Centrum Synchronizacji. Okazało się, że problemem w tym przypadku jest ścieżka.

Pomogło wywołanie komendy:

del "\\?\C:\KATALOG\PLIK"

W moim przypadku musiałem ją jednak wykonać na serwerze ale grunt, że pomogło. Jeszcze raz dzięki, bo szału z tym dostawałem.

1 polubienie

Ten temat został automatycznie zamknięty 90 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.