2015-07-03 151 views
0

我一直在使用删除文件和程序文件夹的文件夹

remove-item -path C:\... 

删除文件夹和文件,但我最近正在试图消除在Program Files文件夹中的文件,我得到一个错误:

A positional parameter cannot be found that accepts the argument 'Files\New'.

试图看看它是否只是语法,但它似乎不是。

remove-item -path C:\Program Files\New -force 

也有一个在情况下,它在64位机器,

remove-item -path C:\Program Files (x86)\New -force 

都不起作用。我所有的其他remove-item已经工作。

任何帮助将是伟大的!

+3

尝试在路径周围放置引号,例如'remove-item -path“C:\ Program Files \ New”-force“ – fvu

回答

2

您的命令:

remove-item -path C:\Program Files\New -force 

被解析成一个字符串参数-path与值C:\Program和开关参数-force。您的命令Files\New中有一个附加部分。它不以破折号开始,所以PowerShell中试图将其绑定到任何位置参数,但它不能,所以它说:

A positional parameter cannot be found that accepts the argument 'Files\New'

任何时候你有你的论点空间,你必须把单引号或双引号:

remove-item -path "C:\Program Files\New" -force 
+0

您应该养成为此使用单引号而不是双引号的习惯。你不会在字符串中解释表达式,至少不是故意的 - 而且你不想意外地这样做。 –

+0

@RyanBemrose - 也许,但它真的受伤了吗?我突然想起我应该使用'ls'$ env:programfiles \ windows NT“'而不是'C:\ Program Files',现在我还必须更改引号。 –

+0

不,它并没有受到伤害,直到那一天它远远不会受到伤害,因为你的字符串中有美元符号或反向符号,唯一的症状是“我的字符串正在替换随机字符或去失踪“,而且你习惯使用双引号来表示你花费一个小时试图弄清楚它为什么被打破的所有事情,因为你从来没有想过使用单引号。 –

1

@ fvu的推荐是正确的。您需要用空格引用任何路径名称。

remove-item -path 'C:\Program Files\New' -force 

PowerShell是足够聪明,知道当你把类似remove-item -path c:\temp的事“-path”之后应该是一个字符串,所以PS把它像一个字符串。但它不能用空格来实现,因为空格也是参数之间的分隔符。所以解决方案是明确地把它作为一个字符串。

在这种情况下,单引号(')和双引号(")之间没有区别。如果您需要将Powershell变量注入字符串,则使用后者。因为你没有这样做,我建议单身。

相关问题