5

我的一位用户问为什么我的应用程序不支持文件名中的分号。我逐步浏览了我的代码,似乎 Windows 函数 GetOpenFileName 会截断任何包含分号的文件名。例如“one;two.wav”->“one”。

微软表示不允许使用冒号,但不要提及分号......

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

它们是否合法?

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

哦!,奇怪 - 文件名是正确的,除了“滚动”到左边。所以“one;two.wav”看起来像“two.wav”,直到我单击它并按左箭头(然后没关系)。所以这不是一个错误,只是奇怪的行为。

4

5 回答 5

8

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

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

以下保留字符:

  • <(少于)
  • >(比...更棒)
  • :(冒号)
  • "(双引号)
  • /(正斜杠)
  • \(反斜杠)
  • |(垂直条或管)
  • ?(问号)
  • *(星号)
  • 整数值零,有时称为 ASCII NUL 字符。
  • 整数表示在 1 到 31 范围内的字符,允许使用这些字符的备用流除外。
  • 目标文件系统不允许的任何其他字符。

我可以在我的 Win7 系统上为文件名添加分号。注意代码,可能是您的代码或第三方代码,这些代码会使用意外字符(最明显的是空格)进行奇怪的操作。

于 2010-10-06T05:01:39.893 回答
4

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

于 2012-06-12T07:59:47.773 回答
2

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

于 2012-06-12T07:42:05.450 回答
1

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

于 2010-10-06T05:01:46.717 回答
1

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

于 2010-10-06T05:02:49.813 回答