точки с запятой в именах Windows? - PullRequest
4 голосов
/ 06 октября 2010

Один из моих пользователей спросил, почему мое приложение не поддерживает точки с запятой в именах файлов.Я прошел через мой код, кажется, функция Windows GetOpenFileName усекает любое имя файла, содержащее точку с запятой.например, "one; two.wav" -> "one".

Microsoft говорит, что двоеточия не допускаются, но не упоминают точки с запятой ...

http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

Они легальны или нет?

РЕДАКТИРОВАТЬ: ..и как GetOpenFileName () работать с точками с запятой в имени файла?

OH !, Странно - Имя файла правильное, кроме«прокрутил» налево.Так что "one; two.wav" выглядит как "two.wav", пока я не нажму на него и не нажму стрелку влево (тогда все в порядке).Так что это не ошибка как таковая, только странное поведение.

Ответы [ 5 ]

8 голосов
/ 06 октября 2010

Точки с запятой допустимы в путях к файлам NTFS .

Используйте любой символ в текущей кодовой странице для имени, включая символы Юникода и символы в расширенном наборе символов (128–255), за исключением следующего:

Следующие зарезервированные символы:

  • <(меньше чем) </li>
  • (больше чем)

  • : (двоеточие)
  • "(двойная кавычка)
  • / (косая черта)
  • \ (обратная косая черта)
  • | (вертикальная черта или труба)
  • ? (вопросительный знак)
  • (звездочка)
  • Целочисленное значение ноль, иногда его называют символом ASCII NUL.
  • Символы, чьи целочисленные представления находятся в диапазоне от 1 до 31, за исключением альтернативных потоков, где эти символы разрешены.
  • Любой другой символ, который не разрешен целевой файловой системой.

Я могу добавить точки с запятой в имена файлов в моей системе Win7. Ищите код, возможно, ваш или сторонний код, который делает странные вещи с неожиданными символами (особенно пробелы).

4 голосов
/ 12 июня 2012

Хотя это может быть опущено в руководствах по Windows, точка с запятой также является зарезервированным символом, например, "dir .dat; .bak" является допустимой командой.То же относится и к символу «плюс», например, «copy test1.dat + test2.dat test3.dat» является допустимой командой.

2 голосов
/ 12 июня 2012

True: Windows допускает точку с запятой в именах файлов.Но когда вы записываете такие файлы на диск с данными или DVD, имена усекаются.Это я испытал при использовании aHead Nero версии 9.

1 голос
/ 06 октября 2010

Да. Точка с запятой является допустимым символом в имени файла Windows. Впрочем, меня не удивило бы, если бы были другие программы, у которых была проблема с ними.

1 голос
/ 06 октября 2010

Да, они разрешены.Просто если вы запускаете их в командной строке, вы должны заключать в них кавычки.

...