|
|
1
25
我意识到这个问题已经存在几年了,但是由于它仍然是许多谷歌查询的头号结果,这些查询都是通过浏览器拖放来运行PowerShell的,所以我想我今天会发布我的想法,希望它能帮助其他人。 我希望能够将文件拖放到PowerShell(PS1)脚本上,但找不到任何好的解决方案(任何不涉及额外脚本或快捷方式的解决方案)。我开始在注册表中查找文件助理,我想出了一个似乎工作得很好的方法。 首先,我们需要为.ps1文件添加一个DropHandler条目,这样资源管理器就知道ps1文件应该接受拖放操作。对这个注册表进行更改。您可能需要创建ShellEx和DropHandler子键。
此放置处理程序是Windows脚本宿主使用的处理程序。这是我的第一选择,因为它支持长文件名。如果遇到空格或其他问题,可以尝试使用标准Shell32可执行文件(.exe,.bat等)删除处理程序:
这两个放置处理程序都是通过为文件类型(被看作是
通过修改ps1文件的打开谓词来更改此行为:
这将在打开时在PowerShell中运行脚本,并传递所有参数(删除的文件)。我将其设置为在脚本完成后保持打开状态,但您可以通过删除
就是这样。我没有做过任何广泛的测试,但到目前为止它似乎工作得很好。我可以删除单个文件/文件夹以及组。参数列表中文件的顺序并不总是您所期望的(这是资源管理器如何排序所选文件的一个奇怪现象),但除此之外,它似乎是理想的。您还可以在中创建PS1文件的快捷方式。
以下两个注册表文件格式的更改:
笔记:
|
|
|
2
9
将文件或文件夹传递到PowerShell脚本的最简单方法是如下包装脚本:
你所要做的就是 复制.bat文件 使用与脚本文件相同的名称,但扩展名为.bat 例如“hello.ps1”<-->“hello.bat” 将文件/文件夹放到批处理文件中,它会将它们传递到脚本中。 示例脚本代码可能如下所示:
|
|
|
3
3
我不知道为什么我没有早点想到这个… 秘密一直以来都是参数属性,因为它是可用的。” ValueFromRemainingArguments “。 捷径
PS1
|
|
|
4
1
更改此的快捷方式并尝试:
|
|
|
5
1
我已经申请了 bug report 上 Powershell Microsoft Connect 站点。 |
|
|
6
0
不幸的是,
由于在快捷方式上拖放的所有内容(或选择“发送到”)都将作为绝对路径的空间连接列表传递给脚本,因此可以分析
每个地方
绝对文件模式取自 here .
我用括号将它括起来(以使第一组与实际路径相匹配),并添加了
|