【问题标题】:Invoke verb on multiple files via Shell.Application通过 Shell.Application 在多个文件上调用动词
【发布时间】:2013-09-12 12:21:28
【问题描述】:

我正在使用“Shell.Application”COM 对象通过 PowerShell 进行一些自动化,但我遇到了需要对文件夹中的多个项目调用动词的情况。基本上我需要模拟用户选择多个文件/文件夹并从 shell 菜单调用动词的情况。

我可以在单个项目上毫无问题地做到这一点,但我还没有找到如何在多个项目上调用它的方法。知道怎么做吗?

编辑: 这就是我对单个项目的称呼:

$shell = New-Object -Com "Shell.Application"
$shell.Namespace($Path).Self.InvokeVerb("some action")

【问题讨论】:

  • 请提供您尝试过的单品的代码
  • 通过查看可用的接口似乎没有办法做到这一点。需要有一种方法来创建您自己的项目集合,而且看起来没有一种方法可以做到这一点。我能想到的只是一个杂项,涉及在临时文件夹中为所需项目创建快捷方式,然后在该文件夹上调用InvokeVerb

标签: powershell com windows-shell


【解决方案1】:

您可以使用InvokeVerbEx 对文件夹中的所有文件执行:

$shell.Namespace("C:\test").Items().InvokeVerbEx()

对于文件夹中的特定文件,我认为最好的方法是将您拥有的单个项目代码放在一个循环中:

$path1, $path2 | %{ $shell.Namespace($_).Self.InvokeVerb() }

Filter 方法也可能有用

【讨论】:

  • 感谢您的建议,Filter 方法看起来是正确的方法(我不能使用您的 ForEach 示例,因为它的行为就像您在每个项目上调用一次一样)。但是有一个问题,它只接受简单的通配符过滤器,我需要指定完整的文件/文件夹名称。还有其他想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 2012-11-24
相关资源
最近更新 更多