系统找不到文件,即使它存在

系统找不到文件,即使它存在

我的操作系统 (Windows 2008 Server) / 文件系统 (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

我正在以“管理员”身份运行命令提示符,并使用“more”命令生成:

more when_it_initializes.cs
Invalid parameter - when_it_initializes.cs

同样,当我在文件上运行“记事本”时,我得到

The system cannot find the path specified.

该文件是由 Team City(构建我的代码的持续集成服务器)创建的。奇怪的是,它还创建了超过 10,000 个其他文件,即使它们位于同级文件夹中,我也可以毫无问题地打开它们。

与其他可以正常工作的文件相比,检查所有者和只读属性对我来说没有问题。奇怪的是,如果我使用“explorer”启动“notepad”并打开,它就可以正常工作。我想可能是命令提示符的某些部分影响了它,但我不知道。

我还可以检查什么来查看为什么它无法打开?

答案1

您可以通过键入以下内容来创建类似的文件进行测试,然后按住ALT255在数字键盘上键入,然后释放ALT并按ENTER。这将创建一个末尾带有隐藏字符的文件名。

echo.>when_it_initializes.cs

但是,我收到的错误消息是:

more when_it_initializes.cs
Cannot access file c:\path\to\file\when_it_initializes.cs

我可以使用以下命令删除它:

del when*

答案2

问题在于总路径和文件字符长度。如果我通过命令提示符运行“重命名”,则会得到:

The filename or extension is too long.

但是,如果我随后通过资源管理器将文件重命名为“when.cs”之类的名称,然后返回命令提示符并运行“notepad”或“more”甚至“rename”,它就会起作用。

看起来包括目录在内的文件总长度在 250-260 之间。

答案3

父目录(或其父目录)的名称可能有问题。

可能是磁盘有问题,运行CHKNTFS。

答案4

这不应该是文件系统问题,因为您可以从资源管理器中打开文件。因此问题应该出在名称上,正如 Dennis 所建议的那样。尝试使用 shell 通配符(如del *.*或)type *.*并检查输出。如​​果通配符有效,则问题很可能是由于使用了特殊的 ASCII 字符(或奇怪的 Unicode 字符,如果支持 - 我对此不确定)。

相关内容