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?
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?
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 :
Nazwa pliku nie może zawierać żadnego z następujących znaków:
\ /: *? „<> |
/
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.
\
?
*
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 pliku A: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 w NtQueryDirectoryFile
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.