我有一个文件,我的操作系统(Windows 2008服务器)/文件系统(NTFS)遇到麻烦。 这是目录的“dir”:
07/20/2009 11:28 AM <DIR> . 07/20/2009 11:28 AM <DIR> .. 07/20/2009 11:28 AM 9,425 when_it_initializes.cs 1 File(s) 9,425 bytes 2 Dir(s) 15,536,758,784 bytes free
我以pipe理员身份运行命令提示符并使用“more”命令生成:
more when_it_initializes.cs Invalid parameter - when_it_initializes.cs
同样,当我运行“记事本”我得到的文件
The system cannot find the path specified.
该文件由Team City创build,这是一个持续集成的服务器,可以构build我的代码。 奇怪的是,它也创build了超过10K的其他文件,我打开没有问题,即使他们在兄弟文件夹。
与其他工作的文件相比,对所有者和只读属性的检查对我来说是好的。 奇怪的是,如果我使用“资源pipe理器”启动“记事本”,并打开,它工作正常。 我在想可能是有影响它的命令提示符,但我不知道。
还有什么我可以检查,看看为什么不能打开?
您可以通过键入以下内容创build一个类似于testing的文件,然后按住ALT并在数字键盘上键入255 ,然后释放ALT并按ENTER键 。 这将在最后创build一个带有隐藏字符的文件名。
echo.>when_it_initializes.cs
但是,我得到的错误消息是:
more when_it_initializes.cs Cannot access file c:\path\to\file\when_it_initializes.cs
我可以删除它:
del when*
问题是总path和文件字符长度。 如果我通过命令提示符运行“重命名”,我会得到:
The filename or extension is too long.
但是,如果我然后通过资源pipe理器将文件重命名为“when.cs”,然后返回到命令提示符下运行“记事本”或“更多”,甚至“重命名”它将工作。
它看起来像包括目录的总文件长度在250-260之间。
父目录(或其父母)的名称可能是一个问题。
这可能是磁盘的问题,运行CHKNTFS。
它不应该是一个文件系统的问题,因为你可以从资源pipe理器打开文件。 所以问题应该如丹尼斯所说的那样命名。 尝试shell通配符,如del *.*或type *.*并检查输出。 如果通配符工作,那么问题很可能是由于使用特殊的ASCII字符(或奇怪的Unicode字符,如果支持 – 我不知道这一点)。