我的操作系统 (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
您可以通过键入以下内容来创建类似的文件进行测试,然后按住ALT并255
在数字键盘上键入,然后释放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 字符,如果支持 - 我对此不确定)。