如何实现:对同目录下的不同文件打印不同份数

动作需求 · 1214 次浏览
七个七 创建于 2023-12-17 13:35

A文件打印2份,B文件打印3份,用cmd或其他方式后台静默打印,请教大佬如何实现

 

目前已完成:

用pdftoprint(网址:https://mendelson.org/pdftoprinter.html)实现了对单一的文件打印(例如 对A文件打印2份

 

困难:

多文件搞不定,如果用cmd多次发送请求会冲突,即只接收到了第一个请求(如果发送了 A文件打印2份,B文件打印3份,只能实现A文件打印2份,需要加延迟 这样就不稳定。但是不知道咋实现队列一个个发送过去,就是排好队,或者还有其他的办法。


回复内容
CL 2023-12-17 14:29
#1

Shell文件操作可以对文件调用print命令来打印,可以试试。 根据需要设置循环次数和间隔时间。

七个七 回复 CL 2023-12-17 17:27 :

人工设置间隔时间吗,还是自动识别前面文件已发送成功。


如果是人工设置固定时间 那如果有个文件比较大 不就是报错了,现在问题就在这

CL 回复 七个七 2023-12-17 19:02 :

可以先不设置时间长测试一下看看,会不会进入到打印队列

七个七 回复 CL 2023-12-18 21:21 :

可是它会一直跳出来文件然后跳出打印界面,另外要实现某文件打印多份,就会每次都跳出来。    像cmd这样就可以后台静默输送命令给打印,能否直接把需要发送到打印列 然后排队一个个打印

CL 回复 七个七 2023-12-18 22:20 :

如果cmd可以静默打印,直接这动作里写脚本就可以了吧

七个七 回复 CL 2023-12-18 22:22 :


CL 回复 七个七 2023-12-19 07:29 :

cmd多次发送为什么会冲突?为什么加延迟会不稳定? 建议从这两个方面分析解决一下了。或者把详细怎么做的,和什么样的结果现象发出来一起分析看看。

七个七 回复 CL 2023-12-19 11:07 :

目前打印这部分动作是这样的

就是比如打印单份文件没问题,但是要打印A文件2份 B文件3份,这时候就要发两次CMD命令,目前不知道怎么让他们排队进打印列表,只能一次次发送对吧,那就只能加延迟,加延迟就要看文件大小 如果文件大就要发送一会 这样不就是不稳定吗 因为没法真正判断前面一个文件是否发送完,如果两次cmd冲突了,那打印列表就只接受到了第一次的命令

CL 回复 七个七 2023-12-19 11:13 :

打印过程中,那个打印程序进程还在么?

如果进程还在,用“运行或打开”模块,里面等待进程结束后再继续下一个循环试试。

Ptrrr 2024-01-04 08:30
#2
我之前也研究过这个,然后在参考别人的动作后写过一版队列方式打印PDF文件。你可以参考一下。https://getquicker.net/Sharedaction?code=55cfd94f-6481-46e2-945e-08dc0bfef0d0
Ptrrr 最后更新于 2024-01-04 08:31
epodak 2024-02-06 22:22
#3

一个简单的PowerShell脚本示例,它会遍历当前目录下的所有PDF文件,询问用户每个文件要打印的份数,然后按用户指定的份数发送打印任务到PDFtoPrinter

PowerShell脚本示例

# 获取当前目录下的所有PDF文件
$files = Get-ChildItem -Path . -Filter *.pdf

# 遍历文件
foreach ($file in $files) {
    # 询问用户每个文件要打印的份数
    $copies = Read-Host "请输入 $($file.Name) 要打印的份数"
    
    # 确认用户输入的是数字
    if (![int]::TryParse($copies, [ref]0)) {
        Write-Host "请输入有效的数字。"
        continue
    }
    
    # 根据份数发送打印任务
    for ($i = 0; $i -lt $copies; $i++) {
        Start-Process -FilePath "PDFtoPrinter.exe" -ArgumentList $file.FullName -NoNewWindow -Wait
        Start-Sleep -Seconds 5 # 在任务之间等待5秒
    }
}

在这个脚本中,Get-ChildItem用于获取当前目录下的所有PDF文件。Read-Host用于从用户那里获取输入,即每个文件要打印的份数。然后,脚本会检查用户输入的是否为有效数字。之后,对于每个文件,根据指定的份数,使用Start-Process调用PDFtoPrinter.exe进行打印,每个打印任务之间通过Start-Sleep等待5秒以减少可能的命令冲突。

如何运行PowerShell脚本

  1. 将上述代码保存为.ps1文件,例如PrintPDFs.ps1
  2. 打开PowerShell窗口。
  3. 导航到脚本所在的目录。
  4. 运行脚本,可以直接在PowerShell中输入脚本的路径,如.\PrintPDFs.ps1

确保在运行之前,你已经根据实际情况调整了脚本中的PDFtoPrinter.exe路径或将其所在

回复主贴