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阅读器进行打印操作,
现在前三部分似乎都没有问题,就第四部分无法落地,但又没看出来哪里宕机了,请不吝教诲~~
--------------------------
这个问题已经解决了,各位不用浪费脑细胞了, https://www.52pojie.cn/thread-1972625-1-1.html作者在这儿,紧急修复BUG中 yaoshun3 发表于 2024-10-15 20:38
https://www.52pojie.cn/thread-1972625-1-1.html作者在这儿,紧急修复BUG中
。。。。难道你就没发现,那个也是我写的么。。{:301_972:} 看看这样是否可行 :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 Love0912 发表于 2024-10-16 08:04
。。。。难道你就没发现,那个也是我写的么。。
啊,没注意..失敬失敬 skzhaixing 发表于 2024-10-16 08:16
看看这样是否可行 :start
echo 正在执行打印操作中。。。
for %%f in ("%folder%*.pdf") do (
不行,就连批处理都崩溃了,看样子存在语法错误~
页:
[1]