gpt4 book ai didi

windows - 如何在多个文件上调用动词

转载 作者:可可西里 更新时间:2023-11-01 10:02:25 27 4
gpt4 key购买 nike

我想使用 PowerShell 在多个文件上调用打印动词。在 Windows 资源管理器中,我可以进入一个文件夹,选择一些文件,右键单击并选择打印选项。这将打开包含所有选定文件的“打印图片”对话框。我可以使用以下方法对一个文件执行此操作:

$path = "C:\person.jpg";
Start-Process -FilePath $path -Verb Print | Out-Null;
Start-Sleep -s 150;

但我想知道如何为多个文件执行此操作。

最佳答案

您可以使用 COM 在一次操作中对多个文件调用动词。

假设...

$folderPath = 'X:\Test'
$verbName = 'print'
$verbArguments = ''

...您可以使用...打印文件夹中的所有对象

$application = New-Object -ComObject 'Shell.Application'
$folder = $application.NameSpace($folderPath)
$folderItems = $folder.Items()
Write-Verbose "Folder ""$($folder.Self.Name)"" contains $($folderItems.Count) item(s)."
$folderItems.InvokeVerbEx($verbName, $verbArguments)

我说“对象”是因为 $folderItems 将同时包含文件和文件夹。默认似乎是枚举子文件夹并忽略隐藏的对象,而在不支持它们的对象上忽略动词。

例如,如果您只想打印具有特定扩展名的直接子文件并包含隐藏文件,您可以使用 Filter() 方法...

New-Variable -Name 'SHCONTF_NONFOLDERS'    -Option 'Constant' -Value 0x00040
New-Variable -Name 'SHCONTF_INCLUDEHIDDEN' -Option 'Constant' -Value 0x00080

$application = New-Object -ComObject 'Shell.Application'
$folder = $application.NameSpace($folderPath)
$folderItems = $folder.Items()
$folderItems.Filter($SHCONTF_NONFOLDERS -bor $SHCONTF_INCLUDEHIDDEN, '*.jpg')
Write-Verbose "Filtered folder ""$($folder.Self.Name)"" contains $($folderItems.Count) item(s)."
$folderItems.InvokeVerbEx($verbName, $verbArguments)

如果您想打印一些自定义的文件集,这些文件在扩展名、可见性等方面不能很好地对齐,那么我看不到这样做的方法。这似乎需要修改 $folderItems 或创建一个新的 FolderItems3 实例,但似乎都不可能。我看到有一个 ShellFolderView type支持 item selection ,但这看起来像是用于与资源管理器(类似)窗口进行交互。

上面使用的类型和常量的文档:

关于windows - 如何在多个文件上调用动词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56814683/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com