A文件打印2份,B文件打印3份,用cmd或其他方式后台静默打印,请教大佬如何实现
目前已完成:
用pdftoprint(网址:https://mendelson.org/pdftoprinter.html)实现了对单一的文件打印(例如 对A文件打印2份)
困难:
多文件搞不定,如果用cmd多次发送请求会冲突,即只接收到了第一个请求(如果发送了 A文件打印2份,B文件打印3份,只能实现A文件打印2份),需要加延迟 这样就不稳定。但是不知道咋实现队列一个个发送过去,就是排好队,或者还有其他的办法。
Shell文件操作可以对文件调用print命令来打印,可以试试。 根据需要设置循环次数和间隔时间。
人工设置间隔时间吗,还是自动识别前面文件已发送成功。
如果是人工设置固定时间 那如果有个文件比较大 不就是报错了,现在问题就在这
可以先不设置时间长测试一下看看,会不会进入到打印队列
可是它会一直跳出来文件然后跳出打印界面,另外要实现某文件打印多份,就会每次都跳出来。 像cmd这样就可以后台静默输送命令给打印,能否直接把需要发送到打印列 然后排队一个个打印
如果cmd可以静默打印,直接这动作里写脚本就可以了吧
cmd多次发送为什么会冲突?为什么加延迟会不稳定? 建议从这两个方面分析解决一下了。或者把详细怎么做的,和什么样的结果现象发出来一起分析看看。
目前打印这部分动作是这样的
就是比如打印单份文件没问题,但是要打印A文件2份 B文件3份,这时候就要发两次CMD命令,目前不知道怎么让他们排队进打印列表,只能一次次发送对吧,那就只能加延迟,加延迟就要看文件大小 如果文件大就要发送一会 这样不就是不稳定吗 因为没法真正判断前面一个文件是否发送完,如果两次cmd冲突了,那打印列表就只接受到了第一次的命令
打印过程中,那个打印程序进程还在么?
如果进程还在,用“运行或打开”模块,里面等待进程结束后再继续下一个循环试试。
一个简单的PowerShell脚本示例,它会遍历当前目录下的所有PDF文件,询问用户每个文件要打印的份数,然后按用户指定的份数发送打印任务到PDFtoPrinter。
PDFtoPrinter
# 获取当前目录下的所有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秒以减少可能的命令冲突。
Get-ChildItem
Read-Host
Start-Process
PDFtoPrinter.exe
Start-Sleep
.ps1
PrintPDFs.ps1
.\PrintPDFs.ps1
确保在运行之前,你已经根据实际情况调整了脚本中的PDFtoPrinter.exe路径或将其所在