使用PowerShell打印文件夹中的所有Excel文件

时间:2017-12-01 22:13:13

标签: powershell printing

我有几年前写过的PowerShell脚本,它运行得很好......直到它没有。

$shell = New-Object -com Shell.Application 
$filepath = 'C:\Billing\Clients' 

$shell.Namespace($filepath).Items() | 
% { $_.InvokeVerb('Print') }

在C:\ Billing \ Clients文件夹中,我复制~100个Excel文件。每个Excel文件都需要按文件名的字母顺序打印。

直到本月才开始发挥作用。我想Excel的更新改变了一切。

现在,脚本会尝试同时打开并打印所有Excel文件。以前它以串行方式打印文件。

这太棒了。现在它将我的系统带到它的膝盖,文档以随机顺序打印。

关于如何在下一个文件上调用打印操作之前调用打印操作并等待它完成的任何想法?

1 个答案:

答案 0 :(得分:1)

我过去曾使用过这个来将文件拉入excel并打印出来。您需要确保首先设置默认打印设置,或使用$xl.ActivePrinter = "PRINTERNAME AS EXCEL SEES IT"先设置它。

#Open Excel
$xl = new-object -comobject excel.application
#don't show the window
$xl.visible = $false
#get all of your files
get-childitem "C:\SOME\Path" "*.xlsx" | foreach-object {
    #open file
    $wb = $xl.Workbooks.Open($_.FullName)
    #print with defaults
    $wb.PrintOut()
    #close without saving any changes
    $wb.Close($false)
}
#all done so close excel
$xl.Quit()