CD 奇怪的行为

CD strange behaviour

我需要有人向我解释在这一系列 "cd.." 命令中发生了什么(请注意 "cd" 和“..”之间没有 space):

c:\sebas\miscosas\escacs\pgns$_ya18_08_sants>cd..

c:\sebas\miscosas\escacs\pgns$_ya>cd..

c:\sebas\miscosas\escacs\pgns>cd..

c:\sebas\miscosas\escacs>cd..

c:\sebas\miscosas>cd..
'cd..' is not recognized as an internal or external command,
operable program or batch file.

我只写了一次"cd..",后来我用"arrow up"恢复了之前的命令。

为什么第 5 次失败了?

OpSys 是 Windows Server 2008 R2,版本 6.1,内部版本 7601。

谢谢

顺便说一句,如果我使用 "cd .."(在 "cd" 和“..”之间有一个 space),那么一切都很好。

cd.. 是错误的语法,只是偶然起作用。

正确的语法是:commandSPACEargument

命令cd参数是相对路径..\.

但是 cmd.exe 在使用 cd.. 时首先搜索名称为 cd 的文件,因为它将 cd.. 解释为输入错误的文件名而不是内部命令 光盘。并且 Windows 命令处理器尝试 运行 在当前目录中确实存在名称为 cd 的文件时找到文件,因为目录 c:\sebas\miscosas.[=31 显然是这种情况=]

cd.. 末尾的两个点在搜索合适的目录条目时被 cmd.exe 删除。删除尾随 spaces/tabs 和尾随点几乎总是作为错误更正的一部分完成的,正如在命令行 运行 中看到的那样:

echo Hello world!>"cd..  "

此命令行创建一个名称为 cd 的文件,末尾没有两个点和两个空格。

另请参阅 DosTips 论坛主题 ECHO. FAILS to give text or blank line - Instead use ECHO/,它与同一问题有关。

另请参阅有关 Naming Files, Paths, and Namespaces 的 Microsoft 文章。

即使当前目录中有名称为 cd 的文件,cd..\ 的用法仍然有效。但是这个命令行仍然使用了错误的语法并且再次运行只是偶然。如果当前目录中有名称为 cd. 的文件,此命令行将再次失败,因为 cmd.exe 现在正在当前目录中搜索名称为 cd. 的文件。

所以在以后使用命令 CD 只有正确的语法:cd ..\