powershell - 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)。
可能是一个显而易见的解决方案,但我没有看到。
解决方案
以下对我有用:
cmd /c PowerShell -command "& {Remove-Item -path '%1' -recurse -force -confirm:$false}"
使用 cmd.exe 时,没有脚本块之类的东西。这意味着传递给的值-command
将始终是一个字符串。('')
我在周围添加了单引号,%1
以使双引号("")
与您的论点保持一致。显然,如果(')
文件路径中有单引号,此方法将失败。此外,&
即使在线文档表明需要呼叫接线员,也不需要呼叫接线员。
有关如何使用PowerShell.exe
.
有关PowerShell 单引号和双引号如何工作的详细信息,请参阅关于引用规则。
推荐阅读
- c# - 将通用对象/对象列表与 C# 进行比较
- regex - 解析 JSON 对象的正则表达式
- mongodb - MongoDB 日期插入
- global-variables - 为什么我可以从另一个模块更改数组的值,但不能更改变量的值
- google-sheets - 如果指定列包含值,如何运行查询以仅提取数据
- c# - 创建新 ViewModel 时,ContentControl 不刷新 View
- javascript - 没有收到空白任务的警报
- graph - 关于如何通过收集最大项目来击败迷宫中的贪婪搜索算法的想法?
- django - Django REST Framework:指定视图模型的 DRY 方式
- c++ - SDL_SetRenderDrawColor(255, 0, 0, 255); 未设置继续以黑色打开窗口使用 Visual Studio 10