Jak utworzyć nazwę folderu lub nazwę pliku ze znakami specjalnymi, takimi jak \ /: *? „<> | [duplikat]

9

Mój problem polega na tym, że nie mogę podać nazwy mojego folderu lub pliku ze znakami specjalnymi, takimi jak \ /: *? "<> | w systemie operacyjnym Windows Jest to dla mnie bardzo ważne, aby podać nazwę pliku / folderu zawierającego ten typ znaków.

Już szukam i odsyłam tak wiele stron pod kątem tych problemów, ale wszystkie są beznadziejne. Przeczytałem również stronę pomocy technicznej Microsoft, sugerują użycie innych znaków. To jest jego link, https://support.microsoft.com/en-us/kb/177506

Próbuję już przycisk Alt + numer kodu ASCII tego typu znaków specjalnych, z klawisza numerycznego, przykładowa zmiana nazwy pliku / folderu i naciśnięcie Alt + 60 (dla <znaków) Nadal daje komunikat, że nazwa pliku nie może zawierać żadnego z poniższych postacie: \ / : * ? „<> |

Zaproponuj mi odpowiednie rozwiązanie, bym mógł podać nazwę mojego pliku / folderu za pomocą tego rodzaju znaków specjalnych.

Kirit_Vanani
źródło
Ciekawe: po co ci to?
Kamil Maciorowski,
@ kamil To jest nazwa mojego pliku / folderu i jedno trudne zadanie dla mnie.
Kirit_Vanani,
@ PIMP_JUICE_IT Już to zrobiłem (literalString -literalPath, ale nadal nie
osiągam
nawet jeśli można tworzyć pliki z tymi znakami, żaden program nie będzie w stanie ich otworzyć ani zapisać.
Keltari,
10
- Jak mogę polizać łokieć? - Nie możesz. - Ale ja muszę. - Możesz złamać rękę i spróbować, ale wtedy twoje ramię będzie bezużyteczne. - Nie obchodzi mnie to, muszę tylko polizać łokieć.
Kamil Maciorowski,

Odpowiedzi:

16

Jest to dla mnie bardzo ważne, nazywając plik / folder zawierający te znaki.

Może to być dla Ciebie ważne, ale musisz pozwolić temu odejść i znaleźć inny sposób rozwiązania problemu.

Te znaki nie są dozwolone przez wywołania funkcji systemu operacyjnego Windows, które obsługują nazwy plików.

Nie są one szczególnie dozwolone, ponieważ mają inne zastosowanie:

  • \- Zarezerwowane do użycia jako separator ścieżki i ucieczki charakterem
  • / - Zarezerwowane do użycia jako separator ścieżki
  • : - Zarezerwowane do użycia jako ogranicznik nazwy dysku
  • *i ?- Zarezerwowane do użytku jako wieloznacznych znaków
  • "- Zarezerwowane do użycia w celu cytowania nazw zawierających spacje
  • <, >oraz |- Zarezerwowane do użytku jako operatory przekierowywania poleceń

Możesz oczywiście tworzyć pliki o nazwach zawierających te znaki przy użyciu innego systemu operacyjnego (o ile ten system operacyjny może odczytywać / zapisywać system plików Windows).

Nie będziesz jednak w stanie nic zrobić z tymi plikami za pomocą programów Windows i nie będą one rozumieć nazw plików i będą generować błędy.


Nazewnictwo plików, ścieżek i przestrzeni nazw

Konwencje nazewnictwa

Poniższe podstawowe zasady umożliwiają aplikacjom tworzenie i przetwarzanie prawidłowych nazw plików i katalogów, niezależnie od systemu plików:

...

Jako nazwy użyj dowolnego znaku na bieżącej stronie kodowej, w tym znaków Unicode i znaków w rozszerzonym zestawie znaków (128–255), z wyjątkiem następujących:

  • Następujące zastrzeżone znaki:

    < (less than)
    > (greater than)
    : (colon)
    " (double quote)
    / (forward slash)
    \ (backslash)
    | (vertical bar or pipe)
    ? (question mark)
    * (asterisk)
    
  • Wartość całkowita zero, czasami nazywana znakiem NUL ASCII.
  • Znaki, których reprezentacje liczb całkowitych są w zakresie od 1 do 31, z wyjątkiem alternatywnych strumieni danych, w których te znaki są dozwolone. Aby uzyskać więcej informacji o strumieniach plików, zobacz Strumienie plików.
  • Wszelkie inne znaki, na które docelowy system plików nie zezwala.

Źródłowe pliki nazewnictwa, ścieżki i przestrzenie nazw


Ale i tak naprawdę chcę to zrobić.

Zainstaluj cygwin i użyj touch.

Nie przetestowałem wszystkich możliwości, ale następująca praca:

touch :
touch \|
touch \"
touch \>

Przykładowe dane wyjściowe:

DavidPostill@Hal /f/test/impossible
$ ll
total 0
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:03 '"'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 :
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:02 '|'
-rw-rw-rw-+ 1 DavidPostill None 0 Aug 10 21:07 '>'

Jak widać, nie można ich używać w systemie Windows:

F:\test\impossible>dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\impossible

10/08/2016  21:07    <DIR>          .
10/08/2016  21:07    <DIR>          ..
10/08/2016  21:03                 0 
10/08/2016  21:02                 0 
10/08/2016  21:07                 0 
10/08/2016  21:02                 0 
               4 File(s)              0 bytes
               2 Dir(s)  1,772,601,536,512 bytes free

wprowadź opis zdjęcia tutaj

DavidPostill
źródło
Doceniam twoją odpowiedź, jest trochę pomocna, ale mój problem pozostaje ten sam .. Myślę, że każdy inny superużytkownik może zmienić nazwę za pomocą tych znaków specjalnych.
Kirit_Vanani,
2
@Kirit Możesz tworzyć pliki z tymi znakami, ale system Windows nie może z nimi nic zrobić, a przy próbie użycia tych plików w systemie Windows wystąpią błędy.
DavidPostill
@ DavidPostill Ohh, Jak utworzyć nazwę pliku za pomocą tych znaków. Nie mam nic przeciwko, jeśli da błąd, ale teraz zadaniem jest podanie tego rodzaju nazwy postaci. Aby uzyskać dostęp do tego pliku,
użyję innego systemu operacyjnego
1
@ Kirit Powiedziałem ci już w odpowiedzi „Możesz oczywiście tworzyć pliki o nazwach zawierających te znaki przy użyciu innego systemu operacyjnego (o ile ten system operacyjny może odczytywać / zapisywać system plików Windows)”.
DavidPostill
3
@ Kirit Mówiłem już, że nie jest to możliwe .
DavidPostill
3

Zbuduj swój własny zestaw czcionek. Zastąp niektóre znaki, których nie używasz, obrazami znaków zastrzeżonych.

Clayton
źródło
1
To lub przy użyciu podobnych postaci. Dzięki Unicode wszystko jest możliwe. 🎃
Daniel B,
@ Craig620 Być może nie będzie to dla mnie możliwe. może dać mi jakąś wskazówkę.
Kirit_Vanani,
Nie jestem pewien, tylko szalony pomysł, który przyszedł mi do głowy. Może istnieje forum Stack Exchange do typografii lub publikacji, o które możesz zapytać?
Clayton,
2

W systemie Windows nie można tworzyć plików z tymi znakami. Nie ma rozwiązania, te znaki są zabronione przez Win32 API.

Win32 jest podzbiorem przestrzeni nazw POSIX i nie rozróżnia wielkości liter. Używa wszystkich znaków Unicode, z wyjątkiem: „” „*” ”/„ ”:„ ”<''> ''?” „\” „| NB Nazwy nie mogą kończyć się kropką „.” Ani spacją „”.

- http://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf

ChrisInEdmonton
źródło
NTFS nie jest problemem. (W rzeczywistości pozwala na to, aby te znaki były w porządku - musiało , dla obsługi Interix). Problemem jest sam Windows, to znaczy ograniczenia są nakładane przez API Win32, bez względu na to, jaki jest podstawowy FS.
user1686,
@grawity, wydajesz się mieć rację na podstawie moich dalszych badań. Zredagowałem swoją odpowiedź, aby to odzwierciedlić.
ChrisInEdmonton,
Myślę, że NTFS nie stanowi problemu. To musi mieć jakieś rozwiązanie. Gdy uzyskuję dostęp do dysku NTFS z systemu operacyjnego Linux, mogę wpisać te znaki.
Kirit_Vanani,
„Nazwy nie mogą kończyć się kropką”. Błędny. Możesz zapisać nazwy z rozszerzeniem .. Po prostu nie możesz wiele z nimi zrobić cmd:)
DavidPostill
1
@Kirit Powiedziano ci wiele razy, że nie jest to możliwe .
DavidPostill