题
我不要求有关的一般法规则的文件的名称。我的意思是陷阱,跳出来的无处和咬你。例如,试图名称文件",COM<n>"在Windows?
解决方案
自: http://www.grouplogic.com/knowledge/index.cfm/fuseaction/view_Info/docID/111.
以下人物是无效的文件或文件夹的名字在使用Windows NTFS:
/
?
<
>
\
:
*
|
"
和任何性格你可以的类型,与按Ctrl关键。除上述非法符插入
^
也不允许根据Windows操作系统使用脂肪的文件系统。在使用Windows FAT文件系统的文件和文件夹的名字可能高达255个字符长。
窗下使用windows nt文件系统的文件和文件夹,名称可能是256个字符长。
在窗口的长度完整的路径在这两个系统是260符。
除了这些字符,下列公约也是非法的:
- 放置一个空间结束时的名称
- 把一段末的名称
下列文件名称还保留在窗口:
aux
,com1
,com2
,- ...
com9
,lpt1
,lpt2
,- ...
lpt9
,con
,nul
,prn
其他提示
Windows上合法和非法文件名的完整描述: http://msdn.microsoft.com/en-us/library/aa365247.aspx 一>
正如其他人所说,像Windows这样的设备名称不可能作为Windows下的文件名,因为它们是保留的设备。
但是,有一种转义方法可以创建和访问具有这些保留名称的文件,例如,此命令会将ver
命令的输出重定向到名为COM1的文件中:
ver > "\\?\C:\Users\username\COM1"
现在你将有一个名为COM1的文件,99%的程序将无法打开,如果你试图访问它可能会冻结。
这是Microsoft文章解释了这个<!>“文件命名空间<!>”的说明。作品。基本上它告诉Windows不要对文本进行任何字符串处理并将其直接传递给文件系统。此技巧还可用于处理长度超过260个字符的路径。
当你不知道时,一个棘手的Unix问题:
以 - 或 - 开头的文件是合法的,但在使用时很痛苦,因为许多命令行工具认为您正在为它们提供选项。
其中许多工具都有一个特殊的标记<!>“ - <!>”;发出选项结束的信号:
gzip -9vf -- -mydashedfilename
boost :: filesystem 可移植性指南有很多好消息。
那么,对于MSDOS / Windows,NUL,PRN,LPT <!> lt; n <!> gt;和CON。如果与扩展名一起使用,它们甚至会引起问题:<!> NUL.TXT <!>
除非您触摸特殊目录,否则Linux上唯一的非法名称是“.
”和“..
”。任何其他名称都是可能的,尽管从shell访问其中一些名称需要使用转义序列。
-
'和'--
'开头的文件是shell的痛苦,因为这些字符序列是由应用程序解释的,而不是shell。