首页 > 解决方案 > Powershell 删除项目 %1(上下文菜单)

问题描述

一直在与 Powershell 做我需要它做的事情。这可能是一个简单的解决方案,但我还没有找到它。如果这个问题是重复的,我很抱歉,但我找不到我正在寻找的答案。

TL;底部的 DR。

所以,对于我遇到的问题。我正在尝试通过 regedit 将 PS 脚本添加到上下文菜单,以删除其中的文件夹 + 文件,它适用于其中没有任何空格的文件夹,但是当我尝试删除带有空格的文件夹(如“新文件夹”)时抛出错误并关闭。(尝试使用 Remove-Item 寻找暂停/睡眠命令,但没有运气,除了带有错误处理的长脚本等)

我怀疑错误类似于

Remove-Item : A positional parameter cannot be found that accepts argument 'Folder'.

在 line:1 char:12 + Remove-item <<<< New Folder + CategoryInfo : InvalidArgument: (:) [Remove-Item], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

我目前使用的代码是

cmd /c  PowerShell Remove-Item "%1" -recurse -force

我已经尝试了不同的变体,让它在没有运气的情况下工作。IE 替换"%1"为“pathAsString”,添加了另一个"% 1",添加了通配符"* *",删除了标志。我尝试过的代码有一些不同的变体:

cmd /c PowerShell Remove-Item \"%1\" -recurse -force
cmd /c PowerShell Remove-Item & "{"%1" -recurse -force"}"

TL;DR cmd /c PowerShell Remove-Item "%1" -recurse -force忽略带有空格的文件夹,尝试了各种方法。上下文菜单中的用法(通过 Regedit)。

可能是一个显而易见的解决方案,但我没有看到。

标签: powershell

解决方案


以下对我有用:

cmd /c PowerShell -command "& {Remove-Item -path '%1' -recurse -force -confirm:$false}"

使用 cmd.exe 时,没有脚本块之类的东西。这意味着传递给的值-command将始终是一个字符串。('')我在周围添加了单引号,%1以使双引号("")与您的论点保持一致。显然,如果(')文件路径中有单引号,此方法将失败。此外,&即使在线文档表明需要呼叫接线员,也不需要呼叫接线员。

有关如何使用PowerShell.exe.

有关PowerShell 单引号和双引号如何工作的详细信息,请参阅关于引用规则。


推荐阅读