【发布时间】:2014-10-23 14:01:09
【问题描述】:
我有一个问题要问你们......希望有人能提供帮助。
背景:我有,比如说,由 6 个单独的计划任务启动的 6 个 .exe(.exe 以客户端命名,看起来像这样 - CLIENTNAME_PROGRAM.EXE)。出于调度目的,这 6 个任务在 3 个单独的用户帐户下运行。这意味着,我可以在不同的帐户下同时运行 2 个进程(您不能在一个 ID 下同时运行它们)。如果你使用一个ID,你必须运行一个,等待它结束,然后等待下一个。
问题:我的批处理文件中有一些代码在寻找另一个进程并等待它结束...但是,这是在所有进程的 .exe 名称相同时编写的(在我们去 CLIENTNAME_PROGRAM.EXE 之前,以前只是 PROGRAM.EXE)。问题是,我刚刚意识到我的 %TFProName% 变量设置为当前尝试运行的客户端的名称......所以它没有寻找在当前卡住的同一计算机帐户下运行的任何其他 TFProName。这有意义吗?
所以,我需要:
在用户 ACCOUNT1 下启动 CLIENT2_PROGRAM 之前,搜索在 ACCOUNT1 下运行的任何其他 *_PROGRAM 进程并等待它结束。如果运行时间较长,请运行 powershell 脚本以终止所述进程。
下面是我的代码sn-p:
:PRVARCHSTART
tasklist /FI "IMAGENAME eq %TFProName%" | find /I "%TFProName%" >nul
IF ERRORLEVEL 1 (
echo **** %TIME% - Another archive process is not running...checking for an import/export process... **** >> "%logfilefolder%\%logfilename%"
goto PRVARCHEND
) ELSE (
echo **** %TIME% - Another archive is running...please wait...checking again... **** >> "%logfilefolder%\%logfilename%"
PING 1.1.1.1 -n 1 -w 5000 >nul
powershell "& '%scriptdirectory%\KillTFProAdmin.ps1'"
goto PRVARCHSTART
)
:PRVARCHEND
【问题讨论】:
标签: batch-file kill-process tasklist