Gdy próbuję zapisać plik, jeśli w nazwie używam znaków specjalnych (takich jak dwukropek, znak zapytania lub wykrzyknik) w systemie Windows, pojawia się komunikat, że nazwa pliku jest nieprawidłowa.
Dlaczego?
windows
special-characters
użytkownik 284989
źródło
źródło
Odpowiedzi:
Istnieje kilka znaków, które mają specjalne znaczenie dla systemu Windows (i systemu DOS, skąd pochodzi większość znaków)
z MSDN :
/
jest przełącznikiem (a także separatorem katalogów).\
jest separatorem katalogów.:
jest oznaczeniem napędu.*
i?
są znakami wieloznacznymi używanymi do wyszukiwania."
to sposób na spację w parametrach.<
i>
są przekierowaniami, które pozwalają na wejście i wyjście z programu pochodzącego i przechodzącego do czegoś innego niż ekran / klawiatura.|
jest potokiem, który umożliwia wykorzystanie danych wyjściowych z jednego programu jako danych wejściowych do następnego.źródło
\
?
*
i"
są jedynymi naprawdę niezbędnymi w obecnej składni, ponieważ inne znaki są użyteczne tylko poza cudzysłowami. Wyjątkiem jest: co jest przydatne tylko jako druga postać, którą można zakazać, pozwalając na to gdzie indziej. Innymi słowy, nie ma nazwanego plikuA:A letter's story.txt
, ale nie ma problemu z plikiem o nazwieSarah: My favorite cat.txt
<>"
są zarezerwowanymi znakami wieloznacznymi. Windows używa ich do implementacji złożonej semantyki dla DOS*?.
podczas tłumaczenia na natywny NT, który ma prostą semantykę*?.
. Sześć znaków wieloznacznych jest zarezerwowanych, ponieważ system Windows implementuje dopasowanie symboli wieloznacznych w samym systemie plików, tj. Bezpośrednio wNtQueryDirectoryFile
wywołaniu systemowym, bez mechanizmu zmiany znaczenia. W Uniksie symbole wieloznaczne są implementowane na poziomie aplikacji, zwykle przez powłokę, która obsługuje ich ucieczkę.:
zwykle jest zarezerwowana w nazwach plików, ale nie w ścieżkach plików. Jest używany do nazw urządzeń i jako ogranicznik dla strumieni plików (np. „Nazwa_pliku: nazwa_pliku: typ strumienia”). Również niektóre systemy plików takie jak VirtualBox współdzielonym folderze systemu plików pozwalają:
,|
oraz znaki sterujące ASCII (1-31) w nazwach plików, ale są one zastrzeżone we wszystkich systemach plików z wyjątkiem Microsoft dla systemu plików o nazwie-rurowej.