Windows文件名中的半冒号?

时间:2010-10-06 04:58:38

标签: windows getopenfilename

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

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

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

他们是否合法?

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

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

5 个答案:

答案 0 :(得分:8)

Semicolons are legal in NTFS file paths

  

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

     

以下保留字符:

     
      
  • < (小于)
  •   
  •     

    (大于)

      
  •   
  • :(冒号)
  •   
  • “(双引号)
  •   
  • /(正斜线)
  •   
  • \(反斜杠)
  •   
  • | (竖杆或竖管)
  •   
  • ? (问号)
  •   
  • (星号)
  •   
  • 整数值为零,有时也称为ASCII NUL字符。
  •   
  • 整数表示形式在1到31范围内的字符,但允许使用这些字符的备用流除外。
  •   
  • 目标文件系统不允许的任何其他字符。
  •   

我可以在Win7系统上为文件名添加分号。观察代码,可能是您的代码或第三方代码,它会对意外字符(最明显的是空格)做出奇怪的事情。

答案 1 :(得分:4)

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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