Love0912 发表于 2024-10-15 18:37

PDF批量打印的批处理 无法打印的落地求助

本帖最后由 Love0912 于 2024-10-17 16:53 编辑

先看代码:
@echo off
setlocal enabledelayedexpansion
set "acroFound=0"

:: 遍历所有磁盘
echo 程序初始化中,查询您是否已安装PDF阅读软件。。。。。
for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
    if exist %%d:\ (
      :: 检查每个磁盘的根目录及其子目录中是否存在AcroRd32.exe
      dir /b /s %%d:\AcroRd32.exe >nul 2>&1
      if !errorlevel! equ 0 (
            set "acroFound=1"
            for /f "delims=" %%i in ('dir /b /s %%d:\AcroRd32.exe') do (
                set "cx=%%i"
                goto :jx :: 找到了就结束循环
            )
      )
    )
)
:xz
cls
echo 你当前电脑未安装AcroRd PDF阅读器
echo.
echo 1进行下载,并关闭此脚本            2   直接关闭当前脚本   
echo.
:cho
set choice=
set /p choice=          请输入对应的按回车:
IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
if /i "%choice%"=="1" goto wz
if /i "%choice%"=="2" goto end
echo 选择无效,请重新输入
echo.
goto cho
:wz
cls
start "" "https://zhaol.lanzoui.com/i1yhNf0uzje"
exit
rem 通过拖拽或输入文件名指定路径
:jx
cls
echo.   
echo                              二虎电脑 PDF打印管理器
echo ╔┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╗
echo.┋                                                                        
echo ┋   1、本程序用于快速批量打印PDF文件
echo ┋   2、本程序默认使用指定的PDF阅读器(Adobe Reader)并使用默认的打印机 ┋
echo.┋   3、本程序完全免费,旨在让您能快速完成繁琐的任务,解放双手
echo.┋   4、如发现BUG可联系作者进行反馈。
echo.┋   5、软件不设置版权限制,可以随意使用,但是不允许拿去卖钱!!                                                                  
echo.┋                                       
echo ┋                              作者:二虎电脑 同V
echo.╚┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╝
set "folder=%~1"
for /f "delims=" %%i in ('powershell -command "(Get-WmiObject -Class Win32_Printer | Where-Object { $_.Default -eq $true }).Name"') do set printer=%%i
if "%folder%"=="" set /p folder="请输入包含PDF文件的文件夹路径(支持直接将文件夹拖拽到本脚本)并按回车确认: "
rem 本脚本加密部分,需要输入密码才能继续使用本程序进行打印
setlocal enabledelayedexpansion
set InputPrompt=请输入密钥以继续:
set CorrectKeyMsg=密钥正确,继续执行...
set WrongKeyMsg=密钥错误,请重新输入或按X键退出...
set RetryPrompt=是否重新输入(Y/N)?:
set InvalidInputMsg=无效输入,请重新选择...

:PasswordLoop
set /p UserKey=!InputPrompt!
if "%UserKey%"=="52pj" (
    echo !CorrectKeyMsg!
    goto start
) else (
    echo !WrongKeyMsg!
    set /p Choice=!RetryPrompt!
    if /i "%Choice%"=="Y" goto PasswordLoop
    if /i "%Choice%"=="X" goto end
    echo !InvalidInputMsg!
    goto PasswordLoop
)
rem 指定完毕执行以下命令

:end
exit

:start
echo 正在执行打印操作中。。。
for %%f in ("%folder%*.pdf") do (
    echo 正在打印 %%f ...
    start "" /min %cx% /t "%%f" "%printer%"
)
rem 执行完毕,反馈信息
echo.
echo 所有PDF文件打印完毕,摁任意键退出此脚本。
pause
这个代码经过测试,其它部分都没啥问题了,好像是!! 现在的问题是,无法调用默认打印机进行打印,不晓得原因是啥,没有查出来是没有成功调用PDF阅读器还是没有成功调用打印机,但是按代码来说,似乎我都进行了定义应该没问题才对呀,,求知道的大佬给好好看看哪里出了问题~~
我的预期设想是:
1、第一部分判断是否安装了PDF阅读器,如果安装了则获取完整路径并赋值给变量cx(为打印部分准备的变量),然后继续运行下面的代码,没有则提示下载或退出
2、第二部分提示用户输入PDF文件夹路径或直接拖拽获取路径
3、第三部分输入对应的密钥进行权限获取,密码正确则继续打印操作
4、第四部分,使用默认打印机,调用PDF阅读器进行打印操作,
现在前三部分似乎都没有问题,就第四部分无法落地,但又没看出来哪里宕机了,请不吝教诲~~
--------------------------
这个问题已经解决了,各位不用浪费脑细胞了,

yaoshun3 发表于 2024-10-15 20:38

https://www.52pojie.cn/thread-1972625-1-1.html作者在这儿,紧急修复BUG中

Love0912 发表于 2024-10-16 08:04

yaoshun3 发表于 2024-10-15 20:38
https://www.52pojie.cn/thread-1972625-1-1.html作者在这儿,紧急修复BUG中

。。。。难道你就没发现,那个也是我写的么。。{:301_972:}

skzhaixing 发表于 2024-10-16 08:16

看看这样是否可行   :start
echo 正在执行打印操作中。。。
for %%f in ("%folder%*.pdf") do (
echo 正在打印 %%f...
powershell -Command "$pdfFilePath='%%f';$defaultPrinter=(Get-WmiObject -Class Win32Printer | Where-Object { $.Default -eq $true }).Name;$printJob = New-Object -ComObject 'Shell.Application';$printJob.NameSpace($defaultPrinter).CopyHere($pdfFilePath)"
)
rem 执行完毕,反馈信息
echo.
echo 所有 PDF 文件打印完毕,摁任意键退出此脚本。
pause

yaoshun3 发表于 2024-10-16 10:22

Love0912 发表于 2024-10-16 08:04
。。。。难道你就没发现,那个也是我写的么。。

啊,没注意..失敬失敬

Love0912 发表于 2024-10-16 10:25

skzhaixing 发表于 2024-10-16 08:16
看看这样是否可行   :start
echo 正在执行打印操作中。。。
for %%f in ("%folder%*.pdf") do (


不行,就连批处理都崩溃了,看样子存在语法错误~
页: [1]
查看完整版本: PDF批量打印的批处理 无法打印的落地求助