使用批处理文件关闭App B时如何自动关闭AppS

时间:2013-07-16 07:43:23

标签: batch-file dos game-development

大家好,我是批处理的新手,但每隔一段时间都喜欢修补和编码。我可以制作一个同时关闭两个程序的批处理文件吗?例如,我创建了一个打开两个程序的批处理文件,App_A(游戏手柄模拟器)最小化App_B(离线RPG游戏)正常窗口。我想要的是当我关闭App_B时,App_A会自动关闭,以便我不必恢复窗口并手动关闭模拟器。

这是我刚才所做的代码,我也在这个网站上找到并运行它:

ECHO OFF
start /d "C:\Documents and Settings\Computer\My Documents\Imulator\PROFILE" SET1.imulatorprofile /m
ECHO IMULATOR STARTED
start /d "C:\Program Files\App_B" App_BLauncher.exe
ECHO APP_B STARTED
ECHO OPERATION COMPLETE

任何评论或建议都非常受欢迎!感谢先进:)

2 个答案:

答案 0 :(得分:0)

我使用Windows命令行并不是很好,但我会尝试以下方法:

  1. 启动模拟器(APP_B退出后应自动退出)
  2. 启动APP_B(使用/ wait选项 - 这应暂停批处理)
  3. 杀死模仿者(使用名字使用PsKill)
  4. 您可以在start找到有关PsKillthis site和其他命令的详细信息。

    希望有所帮助。

    *斯特


    ......稍后补充......

    另一种选择是在进程(App_B)正在运行时在后台进行常规检查,并在完成时继续(在停止App_A时)。当App_B只是另一个进程的启动器(例如App_Launched_By_B)并直接返回时,这种方法很有意义。

    这可以通过一个可能与此类似的小循环来完成:

    start "App_A" /d "C:\Programs\App_A" App_A.exe
    ECHO App_A STARTED
    start "App_B" /d "C:\Programs\App_B" App_B.exe
    ECHO App_B STARTED
    
    ECHO GIVE App_B 30 SECONDS TO LAUNCH App_Launched_By_B 
    SLEEP 30
    
    :LOOP
    PSLIST App_Launched_By_B >nul 2>&1
    IF ERRORLEVEL 1 (
      GOTO CONTINUE
    ) ELSE (
      ECHO App_Launched_By_B IS STILL RUNNING - PAUSE ANOTHER 5 SECS
      SLEEP 5
      GOTO LOOP
    )
    
    :CONTINUE
    PsKill App_A
    ECHO App_A STOPPED
    

    此示例最初来自another answer,由aphoria编写。对于这种情况,我只是稍微调整了一下。

    有关PsList及其他命令的其他信息,请访问this site

    我还想注意,我并不喜欢这种方法,因为它消耗了一些cpu而没有做太多。但它是我能看到的批处理文件的唯一解决方案。

答案 1 :(得分:0)

您可以使用另一个包含两个taskkill行的批处理文件,每个应用程序对应一个,然后启动它。

否则,您需要在窗口中一直运行批处理文件,该窗口循环并检查appB是否未运行,然后它将关闭appA。它不是很优雅。