仅当命令行尚未运行时才终止Adobe Reader进程

时间:2017-12-08 03:01:22

标签: pdf command-line adobe acrobat

我是第一次尝试一些cmd.exe编码。我创建了一个注册表项,其中包含一个由自定义协议处理程序调用的命令。我想要完成的任务:调用Adobe Reader,它会自动将pdf打印到给定的打印机。这部分已经有效了。我正在使用powershell从URL本地下载pdf。我也想在完成后杀死Acrobat进程,但只有在调用我的命令之前已经打开它,所以如果用户在通过Chrome调用协议处理程序时已经打开了pdf,我就不会终止进程。

请原谅不仅仅是丑陋的格式,在我的情况下,单行命令是必须的,我不能制作批处理文件或.ps1文件。

cmd /V /C set exists="0" & (tasklist | find "AcroRd32.exe" > nul) & if 
(%%ERRORLEVEL%%==0 set exists="1") & set myvar=%1 & call set 
myvar=%%myvar:ie:=%% & call set printer=%%myvar:*@@@=%% & call set 
printer=^"%%printer%%^" & call set printer=%%printer:'=%% & call start 
powershell.exe -ExecutionPolicy Bypass -Command $url=%%myvar%%; $pdf = 
$url.split('@'); md -Force c:\TempPdf "| Out-Null"; (New-Object 
System.Net.WebClient).DownloadFile($pdf,'C:/TempPdf/PatientLabel.pdf'); &  
timeout /t 2 & call start acrord32.exe /n /t  C:/TempPdf/PatientLabel.pdf 
%%printer%% & timeout /t 2 & (if !exists!=="1" taskkill /f /im acrord32.exe)

不起作用的部分是tasklist / taskkill。我想将%% exists %%变量设置为1,如果我可以在启动AcroRd32.exe之前找到正在运行的进程,并在打印后将其杀死,如果%%存在%% = 1。我认为这可能因为执行时间/解析而无法正常工作,但我真的不知道如何使用/ V和!var!无论如何。 exists和ERRORLEVEL变量似乎没有扩展。

感谢您的帮助!

0 个答案:

没有答案