Коли я намагаюся зберегти файл, якщо я використовую спеціальні символи в імені (наприклад двокрапка, знак питання чи знак оклику) у Windows, я отримую повідомлення про те, що ім'я файлу недійсне.
Чому так?
Коли я намагаюся зберегти файл, якщо я використовую спеціальні символи в імені (наприклад двокрапка, знак питання чи знак оклику) у Windows, я отримую повідомлення про те, що ім'я файлу недійсне.
Чому так?
Відповіді:
Є кілька символів, які мають особливе значення для Windows (і для DOS, звідки походить більшість символів)
від MSDN :
Ім'я файлу не може містити жодного з наступних символів:
\ /: *? "<> |
/
є комутатором (а також роздільником каталогів).
\
є роздільником каталогів.
:
є позначенням приводу.
*
і ?
використовуються для пошуку.
"
це спосіб дозволу пробілів у параметрах.
<
і >
є перенаправлення, які дозволяють вводити та виводити програму з іншого та іншого, ніж екран / клавіатура.
|
- це труба, яка дозволяє використовувати вихід з однієї програми як вхід до наступної.
\
?
*
і "
є єдиними, які дійсно потрібні у поточному синтаксисі, оскільки інші символи корисні лише поза лапками. Виняток: який корисний лише як другий символ, який може бути поза законом, дозволяючи його в іншому місці. Іншими словами, жоден файл не названий A:A letter's story.txt
, але немає проблеми з ім’ямSarah: My favorite cat.txt
<>"
є зарезервованими символами wildcard. Windows використовує їх для реалізації складної семантики для DOS *?.
при перекладі на рідну NT, яка має просту семантику для *?.
. Шість символів підстановки зарезервовано, оскільки Windows реалізує відповідність підстановочних символів у самій файловій системі, тобто безпосередньо в NtQueryDirectoryFile
системному виклику, без механізму виходу. У Unix символи підстановки реалізуються на рівні програми, як правило, оболонкою, яка підтримує їх виведення.
:
зазвичай зарезервовано у файлах файлів, але не у шляхах до файлів. Він використовується для назв пристроїв і як роздільник для потоків файлів (наприклад, "ім'я файлу: потік: потік"). Крім того, деякі файлові системи, такі як файлова система спільної папки VirtualBox, дозволяють :
, |
і керуючі символи ASCII (1-31) у назви файлів, але вони зарезервовані у всіх файлових системах Microsoft, крім файлової системи з іменованим каналом.