Zdublowane nazwy plików w katalogu

Witam wszystkich,
Wybaczcie formę postu ale jako że jestem nowym użytkownikiem zablokowano mi możliwość dodawania kilku obrazków stąd ta ‘rzeźba’.
Walczę już jakiś czas i nie znalazłem rozwiązania, ani nawet tropu gdzie mogę szukać.

Problem: dwie identyczne (na pierwszy rzut oka) nazwy plików w tym samym katalogu z identycznym rozszerzeniem

  1. Explorator windowsa pokazuje mi dwa pliki:

  2. Linia komend pokazuje co innego:

  3. Total Commander pokazuje to samo:

  4. Total Commander po skopiowaniu nazwy pokazuje ZUPEŁNIE co innego:

Teraz najlepsze
Dodałem ręcznie dwa pliki zawierające literę ‘ć’, okazało się że mimo że litery wyglądają w oknie exploratora i Total Commandera identycznei to są innym znakami.

  1. Litera ‘ć’ skopiowana z nazwy w wyszukiwaniu pokazuje jeden plik:

  2. Litera ‘ć’ wpisana ręcznie z klawiatury w wyszukiwaniu pokazuje kilka plików (ale bez tego dziwnego)

Pytania:

  1. O TU CO CHODZI???
  2. Jak znaleźć w komputerze pliki których nazwy zawierają znaki które są innymi niż wyglądają? nie potrafię wyszukać pliku “c´wiczenia” bo windows w wyszukiwarce nie znajduje takiego znaku " ´ ".
  3. Jaka może być przyczyna takiej sytuacji?

Witamy w świecie unicode.
Możesz nawet ustawić nazwę pliku taką:

Albo kotki pieski o ile system dopuści etc. :cat:

1 polubienie

Osobiście tworzyłem ten plik kilka lat temu ręcznie, więc “ć” to musi być “ć”. Fakt że przez te kilka lat, kopiowałem na różne dyski pomiędzy linuxem a windowsem i ostatecznie jestem na windowsie, czy to kopiowanie mogło być powodem?
Jak mam wyszukać te ‘dziwne’ nazwy?
Poza tym chodzi o to że to nie jest “ć” a widać to jak “ć”.

Tak mogło być powodem. Po prostu pomijaj polskie litery w wyszukiwaniu. Standardowy alfabet będzie poprawnie wyszukiwać.
Możesz też przy pomocy PowerShella zmienić niepoprawne znaki:
Dir | Rename-Item –NewName { $_.name –replace "ZŁYZNAK","DOBRYZNAK" }

Możesz też użyć tego skryptu PS:
https://gallery.technet.microsoft.com/scriptcenter/Remove-Invalid-Characters-39fa17b1

Komenda nie działa, chyba dlatego że u mnie to są dwa znaki a nie jeden:

PS D:\data\test\to_encrypt> Dir | Rename-Item -NewName { $_.name -replace "c´","ć" }
PS D:\data\test\to_encrypt> ls


    Directory: D:\data\test\to_encrypt


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-----        2016-12-18     18:06     161973 c´wiczenia.pdf
-----        2016-12-18     18:06     161973 ćwiczenia.pdf


PS D:\data\test\to_encrypt>

Nie wpisuj tylko wklej ten kłopotliwy znak.

Wkleiłem “c´” nie umiem tego wpisać :slight_smile:
Kopiując to “ć” wklejam to lini poleceń a to zamienia się na “c´”.
To samo jest z “ó”.
W lini poleceń ć to są dwa znaki, ale w exploratorze to jest jeden.

https://pl.wikipedia.org/wiki/Akcent_ostry - skopiuj “akcent ostry dostawny”

́

Windows ma rozdwojenie jaźni widocznie :wink:
Pod Linux identycznie w terminalu to wygląda jak w menadżerze plików, a problem idzie rozwiązać z użyciem iconv

W każdym razie niech ktoś kto lepiej siedzi w PS Ci pomoże, ja za bardzo Unixowo myślę :smiley:

Jak widzisz, nawet to nie pomaga :frowning:

PS D:\data\test\to_encrypt> Dir | Rename-Item -NewName { $_.name -replace "´","ć" }
PS D:\data\test\to_encrypt> ls


    Directory: D:\data\test\to_encrypt
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-----        2016-12-18     18:06     161973 c´wiczenia.pdf
-----        2016-12-18     18:06     161973 ćwiczenia.pdf


PS D:\data\test\to_encrypt> Dir | Rename-Item -NewName { $_.name -replace "c´","ć" }
PS D:\data\test\to_encrypt> ls

    Directory: D:\data\test\to_encrypt
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-----        2016-12-18     18:06     161973 c´wiczenia.pdf
-----        2016-12-18     18:06     161973 ćwiczenia.pdf

U mnie zwykłe ren to ogrania, jedynie problem, że nie na masową skale :racehorse: i trudniej zachować oryginalną nazwę.

ren ale czego na co?
ć na ć
czy
c´ na ć

dlaczego nie działa:
for /r %i in (*c´*) do ren "ć"
ale ręcznie działa:
ren c´wiczenia.pdf ćwiczenia.pdf

Widać zależy jak wyświetla u mnie umiało pokazać w miarę “ć” (najpewniej była już to normalna litera) raz robiło prostokąt (nie wiem po czym, chyba po przeciągnięciu pliku na okno powershell) i na samym początku upraszczało do ´.

Jeszcze niby dodatkowo utrudnieniem może być kodowanie znaków w powershell:

obraz