我有一个问题要问你......希望有人能帮忙。
背景:可以说,我有 6 个由 6 个单独的计划任务启动的 .exe(.exe 以客户端命名,看起来像这样 - CLIENTNAME_PROGRAM.EXE)。出于调度目的,这 6 个任务在 3 个单独的用户帐户下运行。意思是,我可以在不同的帐户下同时运行 2 个进程(你不能在一个 ID 下同时运行它们)。如果你使用一个 ID,你必须运行一个,等待它结束,然后等待下一个。
问题:我的批处理文件中有一些代码在寻找另一个进程并等待它结束......但是,这是在所有进程的 .exe 名称相同时编写的(在我们之前只是 PROGRAM.EXE转到 CLIENTNAME_PROGRAM.EXE)。问题是,我刚刚意识到我的 %TFProName% 变量设置为当前尝试运行的客户端的名称......所以它没有寻找在当前卡住的同一计算机帐户下运行的任何其他 TFProName。那有意义吗?
所以,我需要:
在用户 ACCOUNT1 下启动 CLIENT2_PROGRAM 之前,搜索在 ACCOUNT1 下运行的任何其他 *_PROGRAM 进程并等待它结束。如果运行时间较长,请运行 powershell 脚本以终止所述进程。
下面是我的代码片段:
: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