0

我搜索了2天。现在我在这里,希望能得到帮助。我正在尝试自动“杀死(关闭)”一个文件。例如:

@echo off taskkill /IM Acrord32.exe

那很好用。唯一的问题是,它会关闭每个 PDF 文件。但我只想关闭一个特定的文件。也许通过路径。

所以,我希望任何人都可以帮助我。(它不必是关闭此 PDF 文件的批处理脚本,也可以是工具或其他东西)但它必须自动关闭文件。

我希望你能理解我。我不是英国人。

感谢到目前为止。机器学习

4

2 回答 2

0

为此,您需要“告诉”Acrobat Reader 关闭文件。但是 AFAIK Acrobat Reader 没有公开任何远程控制 API。

我看到的唯一选择是将 Ctrl+F4 发送到 Reader,但从命令行是不可能的(至少使用标准命令)。

于 2013-07-26T12:41:36.227 回答
0

我不知道你的意思,但你要求一个脚本来自动关闭 Acrord32 进程。我的脚本可以,但仅适用于已“暂停”且对处理器要求过多的进程。

这样就无需对 Acrobat Reader 的注册表、参数或设置进行任何更改。默认情况下编写的批处理脚本自动杀死进程 Acrord32.exe 并为此设计了,但该脚本可用于关闭任何其他进程过于繁琐的系统,当脚本调用适当的参数时将其暂停。如果此参数包含带空格的长名称,则必须将参数括在引号中。在脚本里面,以开头的几个参数为例,可以确定。暂停时间、重新检查时间或将在何处创建报告 (LOG)。该脚本关闭所有符合条件的任何用户的进程,当然不是不能关闭的系统。可以在服务器上有用,很多用户的工作。

谢谢你

@echo off
REM Automatic closing Acrobat Reader or other process parameter specified in the call, which too much high the CPU
REM Preparing:  Artur Zgadzaj
REM ---------------------------------------------------------------------------------------------

SET REPEAT_TIME_VERIFICATION_[seconds]=7
SET IDLE_TIME_[seconds]=5

SET LOG_FOLDER=C:\UTIL\LOG



REM    # # # #      CHECKING OR IS STARTED AS ADMINISTRATOR     # # # # #

FSUTIL | findstr /I "volume" > nul&if not errorlevel 1  goto Administrator_OK

cls
echo ************************************
echo ***    RUN  AS  ADMINISTRATOR    ***
echo ************************************
echo.
echo.
echo Call up just as the Administrator. Abbreviation can be done to the script and set:
echo.
echo      Shortcut ^> Advanced ^> Run as Administrator
echo.
echo.
echo Alternatively, a single run "Run as Administrator"
echo or in the Schedule tasks with highest privileges
pause > nul
goto:eof
:Administrator_OK

SET WD=day
if "%~1"==""  (SET Close_Process=AcroRd32.exe)  else  (SET "Close_Process=%~1")
MD %LOG_FOLDER% 2>NUL
Setlocal EnableDelayedExpansion

:again
cls
echo Automatic closing %Close_Process%, which are charged to the processor too ...&echo.&echo.

FOR /F "tokens=2,7,8 delims=,"  %%A IN ('%SystemRoot%\System32\tasklist.exe /v /FO CSV^|find /I ^"%Close_Process%^"') DO (

  SET PROC=%%C
  SET PROC=!PROC:"=!

  FOR /F "tokens=2,3 delims=:"  %%s IN ("!PROC!") DO (SET PR=%%t
      if "!PR:~0,1!"=="0"  (SET /A PROC_TIME=%%s*60+!PR:~1,1!)  else  (SET /A PROC_TIME=%%s*60+!PR:~0,2!))

  if !PROC_TIME! GTR %IDLE_TIME_[seconds]%   (
      SET PID=%%A
      SET PID=!PID:"=!

      %SystemRoot%\system32\taskkill.exe /PID !PID! /F

      SET B=%%B
      SET B=!B:%USERDOMAIN%\=!
      SET B=!B:%COMPUTERNAME%\=!
      SET Process_User=!B:"=!

      if not "!DATE_WD!"=="%DATE%" ((FOR /F "tokens=1" %%W IN ('POWERSHELL GET-DATE -format dddd') DO SET WD=%%W)&&SET DATE_WD=%DATE%)
      echo %TIME:~0,8%    ^(Hanging:  !PROC:~-5!^)         !Process_User! >>"%LOG_FOLDER%\%DATE:-=.%  ^(!WD:~0,3!^)  Close_%Close_Process%.TXT"
      )
  )

TIMEOUT /T %REPEAT_TIME_VERIFICATION_[seconds]% > nul
goto again
于 2015-04-09T00:33:31.390 回答