2015-07-03 173 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變量注入字符串,則使用後者。因爲你沒有這樣做,我建議單身。

相關問題