我想在我的应用程序中包含批处理文件重命名功能。用户可以键入目标文件名模式(在替换模式中的一些通配符后),我需要检查它是否是 Windows 下的合法文件名。我尝试使用正则表达式,例如[a-zA-Z0-9_]+
但它不包括来自各种语言的许多国家特定字符(例如元音变音等)。进行此类检查的最佳方法是什么?
From MSDN 的“命名文件或目录” http://msdn.microsoft.com/en-us/library/aa365247.aspx以下是 Windows 下合法文件名的一般约定:
您可以使用当前代码页中的任何字符(Unicode/ANSI 127 以上),除了:
-
<
>
:
"
/
\
|
?
*
- 整数表示为 0-31 的字符(小于 ASCII 空格)
- 目标文件系统不允许的任何其他字符(例如尾随句点或空格)
- 任何 DOS 名称:CON、PRN、AUX、NUL、COM0、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT0、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、 LPT8、LPT9(并避免 AUX.txt 等)
- 文件名全是句点
一些可选的检查事项:
- 文件路径(包括文件名)不得超过 260 个字符(不使用
\?\
prefix)
- 使用时超过 32,000 个字符的 Unicode 文件路径(包括文件名)
\?\
(请注意,前缀可能会扩展目录组件并导致其溢出 32,000 个限制)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)