无法使用cd前进

问题描述 投票:0回答:2

我在使用 PowerShell 前进时遇到问题。我可以向上移动目录,但不能向下移动。情况是这样的:

我打开 PowerShell 并输入“pwd”命令,它显示我当前位于 PS C:\Users\Robert Inspiron14>

我输入命令“cd..”,现在我移动到 PS C:\Users>

然后,我尝试通过键入以下内容来更改目录:“cd C:\Users\Robert Inspiron14”,但我无法这样做。不幸的是,由于缺乏声誉,我还不能发布图片。

我可以在 CMD 中执行更改,但不能在 PowerShell 中执行更改。另外,我不知道如何将用户从“Robert Inspiron14”更改为“Robert”。如有任何帮助,我们将不胜感激!

powershell directory cd
2个回答
2
投票

在 PowerShell 可以执行您的

cd
命令之前,它需要解析它,PowerShell 的解析器会像这样解释您的命令:

cd  C:\Users\Robert Inspiron14
\/  \_____________/ \________/
Command Name  |            |
             argument 1    |
                         argument 2

换句话说,

C:\Users\Robert
Inspiron14
被解释为单独的参数

这两个参数都不是有效目录的路径,因此

cd
(或者更确切地说
Set-Location
,其中
cd
是别名)会抛出错误。

您可以通过使用引号限定其边界来强制 PowerShell 将

C:\Users\Robert Inspiron14
识别为单个字符串参数(
"
'
都可以):

cd 'C:\Users\Robert Inspiron14'

您可以在

about_Parsing
帮助主题

中阅读有关 PowerShell 如何解析命令表达式的更多信息

2
投票

用更多背景信息来补充 Mathias R. Jessen 的有用答案

引用包含空格的参数是所有 shell中的一般语法必要性,因为未加引号的空格用于分隔多个参数

不仅需要引用空格,还需要使用PowerShell 的任何所谓的元字符(这些字符在不加引号的情况下使用时具有语法功能);例如,将路径传递到字面名为

a;b
的目录也需要引用,因为
;
否则会被解释为 语句分隔符

  • 请注意,PowerShell 的元字符比两个 cmd.exe 都多
    ;有关完整列表,请参阅
    此答案
有多种

引用样式

    PowerShell 的
  • 制表符补全

    自动 根据需要应用引用

  • 如果
  • 可执行文件

    路径(也)需要引用或通过变量表示,则出于语法原因,它必须通过&

    (即
    调用运算符)调用 - 请参阅this回答.

  • cd..是PowerShell

    中内置
    函数的名称,其唯一目的是模拟cmd.exe的(可疑的宽容)行为
    (见下文);该函数执行语法正确的 
    Set-Location ..
    调用(通过执行
    ${function:cd..}
    进行验证),并用空格分隔命令名称与其参数。
    
    


cmd.exe

对比:
不幸的是,

cmd.exe的内置

cd
命令决定
not
强制执行其通常的语法规则,并且启用了诸如
cd C:\Program Files之类的调用。

它不应该这样做

:虽然乍一看很方便,但它构成了通常规则中的一个有问题的例外,会引起混乱 请注意,cmd.exe

制表补全
正确引用了包含空格的参数。 同样,不幸的是,

cd..被允许作为正确的

cd ..
的句法特殊替代品 - 有关详细信息,请参阅
此答案的评论。


[1] 注意

"..." - 如果您在路径中使用

variable
引用,则并不严格需要引用,只要任何 literal 组件不需要引用即可;例如, $HOME\foo 无需引号即可,而
"
周围的
"$HOME\foo bar"
是必需的。使用
子表达式
($(...)
),
规则变得更加复杂
,因此最简单的方法是始终使用 "..."-引用它们。

    

© www.soinside.com 2019 - 2024. All rights reserved.