Powershell 中 rm -rf 的等效命令是什么?

Powershell 中 rm -rf 的等效命令是什么?

众所周知,在 *nix 系统上,会以递归方式rm -rf some_directory删除some_directory其下的所有文件,而无需确认。

Powershell 中此命令的等效项是什么?

请注意给出的答案这里对于 cmd(使用rmdir等),在 Powershell 中不起作用。虽然 Powershell 确实有别名rmdirRemove-Item可能是用了一些开关;不确定是哪个),但它没有别名 cmd 样式开关类似/s

答案1

这可能就是你要找的东西。似乎用搜索引擎稍微搜索一下就能得到同样的结论。

Remove-Item C:\MyFolder -Recurse -Force

或者简写为:

rm <directory-path> -r -Force

(至少在某些版本的 Powershell 中,您不能将“-Force”缩写为“-f”,因为它与“-Filter”产生歧义。)有关更多信息,请参阅Remove-Item 帮助页面

答案2

Powershell 中最接近的命令是:

try {
    Remove-Item -Recurse -ErrorAction:Stop C:\some_directory
} catch [System.Management.Automation.ItemNotFoundException] {}

rm -rf在 Unix 中意味着删除一个文件并且:

-r, -R, --recursive   remove directories and their contents recursively
-f, --force           ignore nonexistent files and arguments, never prompt

Remove-Item -Force和 不一样rm -f

-Force强制 cmdlet 删除无法更改的项目,如隐藏或只读文件或者只读别名或变量。

为了证明-Force不会“忽略不存在的文件和参数,从不提示”,如果我这样做rm -r -Force thisDirectoryDoesntExist,就会导致此错误:

rm : Cannot find path 'C:\thisDirectoryDoesntExist' because it does not exist.

单行代码是rm -r -ErrorAction:SilentlyContinue,但是这会丢弃不存在的错误。

答案3

您应该使用明确的-force密钥而不是,-f因为否则,Powershell 将不知道它是-Filter还是-Force

rm <path> -r -Force

答案4

这是一行代码,其行为类似于rm -rf。它首先检查路径是否存在,然后尝试将其删除。

if (Test-Path ./your_path) { rm -r -force ./your_path}

相关内容