我想使用 PowerShell 打印多个 pdf 文件。
我尝试了多种可用的解决方案,但它们对我不起作用。
我尝试过的一个解决方案如下:
get-childItem "*.pdf" | sort lastWriteTime | foreach-object {start-process $._Name -verb 'print'}
或者也:
@("*.pdf") | %{gci $_} | sort Name | foreach-object {while (@(Get-Printer | Get-PrintJob).Count -gt 0) {Start-Sleep -S 3;write-Host . -NoNewline};Write-Host "";Write-Host $_.Name;start-process -FilePath $_.fullname -verb 'print';while (@(Get-Printer | Get-PrintJob).Count -eq 0) {Start-Sleep -S 1;write-Host . -NoNewline}}
我得到的错误如下:
Start-Process:由于错误,此命令无法运行:尝试使用工作目录“C:\UsersS iles”启动进程“C:\UsersS ilesS.pdf”时发生错误。没有应用程序与此操作的指定文件关联。
我想避免使用 Adobe Reader 或其他第三方应用程序来解决此问题。/
澄清一下:我想使用外部打印机(HP 打印机)打印它,而不是再次将 pdf 打印为另一个 pdf 文件。
我将不胜感激任何提示。
谢谢!
要在 win11 上使用 PowerShell 打印多个 PDF 文件,您可以使用 EDGE 来处理打印作业。
确保将 Microsoft Edge 设置为默认 PDF 处理程序:
使用PowerShell使用Edge进行打印:
$pdfFiles = Get-ChildItem -Path "C:\Users\123\files" -Filter "*.pdf" | Sort-Object LastWriteTime
foreach ($file in $pdfFiles) {
Write-Host "Printing $($file.Name)"
Start-Process "msedge.exe" -ArgumentList "--headless", "--print-to-pdf-no-header", "--print", "`"$($file.FullName)`"" -NoNewWindow -Wait
Start-Sleep -Seconds 3
}
Write-Host "Printing."
至于您遇到的错误。这很可能与您在 Win11 安装的设置中没有设置默认 PDF 处理程序有关。
Windows “打印” 是 Windows 之前的 Microsoft 传统打印文本功能。它将与基于文本的文件配合使用,实际上取代了“将便携式文件复制到端口”,但便携式是一个文件。PRN 不是一个文件。PDF。
我们可以非常轻松地调用将文本打印到 PDF 或任何打印机的函数,例如在命令中发送以下行。
echo Hello World!>temp.txt & Write /pt temp.txt "Microsoft Print to PDF" "Microsoft Print to PDF" hello.pdf & timeout 4 & hello.pdf
如前所述,Windows 中的默认 PDF 处理程序是 Edge(自定义 Chromium 变体),其打印命令功能只能从 HTML CSS 样式文件生成图像或 PDF。
您可以使用它通过 VBS 或 JScript 来命令行打印 port.PDF 到任何输出端口,这两者都是命令 shell 的本机。然而,这被认为是“老派”并且非常可变,因为它取决于计时器变量。
因此本机 PowerShell 没有简单的方法可以通过 Edge 自动打印 PDF。但如果您弹出 PDF 页面,用户可以快速手动打印该页面。
这也是一个带或不带 Edge 的单行命令。