我可以检测应用何时在重置时更改其PID,而不是在应用关闭时检测到它?

时间:2015-08-03 23:12:32

标签: batch-file

我玩一款名为assetto corsa的游戏。 开发人员决定在最后一次更新时对我们的开发方面进行努力。

长而缺乏。我现在必须通过EXE启动服务器,在比赛结束后重置acserver.exe,以便我们可以旋转曲目..

我写了一个小的bat文件来检测exe关闭和重启。然后它被用来将一些CFG文件复制到一个文件夹中,这样我们就有了适合赛道的汽车。 这是代码。

@echo off
:start
start Console_AC_TrackCycle.exe
Ping Loopback 
cls

:run1
tasklist /FI "IMAGENAME eq acserver.exe" | find /I "acserver.exe"
IF ERRORLEVEL 1 GOTO spa1 
IF ERRORLEVEL 0 GOTO run1 

:spa1
del /f /q cfg\*.*
copy presets\spa\*.* cfg\
GOTO run2

:run2
tasklist /FI "IMAGENAME eq acserver.exe" | find /I "acserver.exe"
IF ERRORLEVEL 1 GOTO green1 
IF ERRORLEVEL 0 GOTO run2 

:green1
del /f /q cfg\*.*
copy presets\Nordschleife\*.* cfg\
GOTO run3

:run3
tasklist /FI "IMAGENAME eq acserver.exe" | find /I "acserver.exe"
IF ERRORLEVEL 1 GOTO nur1 
IF ERRORLEVEL 0 GOTO run3

:nur1
del /f /q cfg\*.*
copy presets\nurburg\*.* cfg\
GOTO run4

:run4
tasklist /FI "IMAGENAME eq acserver.exe" | find /I "acserver.exe"
IF ERRORLEVEL 1 GOTO mug1 
IF ERRORLEVEL 0 GOTO run4

:mug1
del /f /q cfg\*.*
copy presets\Mugello\*.* cfg\
GOTO run5

:run5
tasklist /FI "IMAGENAME eq acserver.exe" | find /I "acserver.exe"
IF ERRORLEVEL 1 GOTO sil1 
IF ERRORLEVEL 0 GOTO run5

:sil1
del /f /q cfg\*.*
copy presets\Silverstone\*.* cfg\
GOTO run6

:run6
tasklist /FI "IMAGENAME eq acserver.exe" | find /I "acserver.exe"
IF ERRORLEVEL 1 GOTO imo1
IF ERRORLEVEL 0 GOTO run6

:imo1
del /f /q cfg\*.*
copy presets\Imola\*.* cfg\
GOTO run7

:run7
tasklist /FI "IMAGENAME eq acserver.exe" | find /I "acserver.exe"
IF ERRORLEVEL 1 GOTO vold1 
IF ERRORLEVEL 0 GOTO run7

:vold1
del /f /q cfg\*.*
copy presets\voldermort\*.* cfg\
GOTO run8

:run8
tasklist /FI "IMAGENAME eq acserver.exe" | find /I "acserver.exe"
IF ERRORLEVEL 1 GOTO mag1
IF ERRORLEVEL 0 GOTO run8

:mag1
del /f /q cfg\*.*
copy presets\Magione\*.* cfg\
GOTO run9

:run9
tasklist /FI "IMAGENAME eq acserver.exe" | find /I "acserver.exe"
IF ERRORLEVEL 1 GOTO vall1
IF ERRORLEVEL 0 GOTO run9

:vall1
del /f /q cfg\*.*
copy presets\Vallelunga\*.* cfg\
GOTO rung

:rung
tasklist /FI "IMAGENAME eq acserver.exe" | find /I "acserver.exe"
IF ERRORLEVEL 1 GOTO spa1
IF ERRORLEVEL 0 GOTO rung 

Pause

忽略最后的停顿我把它放在那里检查它像我预期的那样循环..

现在问题是Acserver.exe并没有真正关闭。它重置。它的PID发生变化,但Exe永远不会消失。

我可以做些什么来编辑上面的代码,这样它就会在exe关闭时执行它所要做的事情,但是现在在PID改变时这样做。

感谢名单。

0 个答案:

没有答案