Windows文件名中的分号?

我的一个用户问我为什么我的应用程序不支持文件名中的分号。 我通过我的代码,似乎Windows函数GetOpenFileName截断任何包含分号的文件名。 例如“one; two.wav” – >“one”。

微软表示不允许冒号,但是不要提到分号

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

他们合法吗?

编辑:..and如何GetOpenFileName()使用文件名中的分号?

OH !,奇怪 – 文件名是正确的,除了“滚动”在左边。 所以“one; two.wav”看起来像“two.wav”,直到我点击它,然后按左箭头(那么很好)。 所以这不是一个错误,只有奇怪的行为。

Solutions Collecting From Web of "Windows文件名中的分号?"

分号在NTFS文件路径中是合法的 。

使用当前代码页中的任何字符作为名称,包括扩展字符集(128-255)中的Unicode字符和字符,以下情况除外:

以下保留字符:

  • <(小于)
  • (比…更棒)

  • :(冒号)
  • “(双引号)
  • /(正斜杠)
  • \(反斜杠)
  • | (竖条或管道)
  • ? (问号)
  • (星号)
  • 整数值零,有时被称为ASCII NUL字符。
  • 除了允许这些字符的交替流之外,其整数表示范围为1到31的字符。
  • 目标文件系统不允许的任何其他字符。

我能够在我的Win7系统上添加分号到文件名。 注意代码,可能是你的或第三方的代码,用意想不到的字符(最显着的空格)做奇怪的事情。

虽然在Windows手册中可能会省略,但分号也是一个保留字符,例如“dir .dat; .bak”是一个合法的命令。 这同样适用于加号字符,例如“copy test1.dat + test2.dat test3.dat”是一个合法的命令。

True:Windows允许在文件名中使用分号。 但是,当您将这些文件刻录到数据CD或DVD光盘时,名称会被截断。 这是我在使用头戴式Nero版本9时经历的。

是的,他们是被允许的。 只是,如果你在命令行中运行它们,你必须在其中引用引号。

是。 分号是Windows文件名中的合法字符。 但是,如果还有其他程序对他们有问题的话,我也不会感到惊讶。