PS C:\> cd Program Files
当我给予这个命令时,我不知道为什么,但是它不接受Program Files
。同样的命令在cmd
中工作得很好。
这是它显示的错误:
Set-Location : A positional parameter cannot be found that accepts argument 'Files'.
At line:1 char:1
+ cd Program Files
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-Location], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
5条答案
按热度按时间42fyovps1#
由于您的目录名包含 * 空格 *,因此必须用 * 引号 * 括起来,例如:
如Maximilian Burszley's helpful answer中所述,
Program Files
被解析为 * 两个 * 参数,因为空格用于 * 分隔 * 命令行参数。您尝试使用
cd Program Files
可能是受到cmd.exe
(传统的命令提示符)的启发,这种语法确实适用;然而,即使在那里,它也在概念上违反了参数解析的通常规则。因此,您需要使用 * 引号 * 的形式,以便将 * 包含空格 * 的值作为 * 单个 * 参数传递。
您可以选择以下几种方式来实施此报价:
'...'
* 将 * 文字 * 值括起来,即,应该 * 逐字 * 使用的值;'...'
字符串称为 * 逐字 *(单引号)字符串。$HOME
)或 * 子表达式 *(如$(Get-Date)
;也就是说,"..."
字符串执行 * 字符串插值 *,它们被称为 * 可扩展 *(双引号)字符串。将 * 单个 * 字符引起来(转义);
,也就是所谓的 * backtick *,是PowerShell的通用escape character。因此,您可以使用下列任一项:
此外,您可以使用 * Tab键完成将包含空格的路径的(无空格) 前缀 * 扩展为完整形式 *,并隐式应用引号 *。
例如,如果您在
C:\
中输入:PowerShell会自动完成命令,以便:
请注意
Program Files
(与.\
一起表示当前目录,后面的\
表示目录)是如何 * 自动用单引号引起来 * 的。如前所述,在PowerShell中,
cd
是**Set-Location
**cmdlet的内置别名。Set-Location 'C:\Program Files'
-将其隐式绑定到-Path
参数;也就是说,它等价于Set-Location -Path 'C:\Program Files'
-Path
会将其参数解译为wildcard expression**,因此您可以执行类似Set-Location C:\Win*
的动作,以变更为C:\Windows
(假设万用字符运算式只符合 * one * 目录)。与
cmd.exe
不同的是,在PowerShell通配符表达式中不仅*
和?
具有特殊含义,而且[
和]
也具有特殊含义(对于[abc]
和[a-c]
等字符集和字符范围表达式),因此Set-Location Foo[1]
将 * 不 * 用于更改到 * 字面上 * 名为Foo[1]
的目录。在这种情况下,必须使用**
-LiteralPath
参数**-Set-Location -LiteralPath Foo[1]
-确保路径是**逐字 *(逐字)**解释的。w9apscun2#
**"'**只转义文件夹名中的空格。
ldfqzlk83#
原因是语法无效。powershell命令的每个参数都是用空格分隔的,所以你实际上做的事情类似于:
但
Set-Location
(别名:cd
)没有第二个位置的任何位置参数,因此无法将其绑定到任何参数并在命令中使用,因此出现终止错误。如果您想要一个更简单的
cd
别名,可以这样做(在您的$profile
中):但是,请注意,如果您没有指定相对路径(
.\
),它将使用当前驱动器的根路径(最有可能是C:\
)。这可以在函数中进行调整,以测试两个位置(相对位置和驱动器根位置),但如果两个位置都存在,要确定使用哪一个路径的逻辑将是棘手的(或者总是默认为相对位置)。rqenqsqc4#
使用引号(双引号或单引号)转到白色或特殊符号的文件夹或路径。
例如:-
或
对于您的情况,它将是
PS C:\> cd "Program Files"
bhmjp9jg5#
这是因为句子之间的空格。在此处输入代码您完成了选项卡。替换PS F:〉cd新文件夹与PS F:〉cd在PowerShell中的“新文件夹”。或者查看F:〉cd './new folder'.我是个初学者,你应该试试这个。