【问题标题】:Creating logfile from application console with .bat and executing next line of script使用 .bat 从应用程序控制台创建日志文件并执行下一行脚本
【发布时间】:2015-01-16 21:49:35
【问题描述】:

我目前有以下 .bat 脚本:

acServer.exe %* > console.log
timeout 30 /nobreak
stracker.exe --stracker_ini stracker.ini

但它只执行第一行,所以它永远不会启动第二个应用程序。

我需要一个脚本,它首先启动 acServer.exe 应用程序并将其控制台输出记录到 console.log 当 acserver.exe 仍在运行并被记录时,它应该启动 stracker.exe 应用程序(在 acserver.exe 启动后大约 30 秒。)

编辑 - 基于对 SomethingDard 的回答的 cmets,OP 还希望在批处理脚本结束时终止 acServer.exe 进程。

【问题讨论】:

    标签: batch-file scripting


    【解决方案1】:

    批处理文件一次运行一个命令,因此脚本会等到 acServer.exe 结束后再继续...除非您使用 start 命令。

    start "" acServer.exe %* > console.log
    timeout 30 /nobreak
    stracker.exe --stracker_ini stracker.ini
    

    【讨论】:

    • 完美,如何在批处理脚本关闭时关闭 acServer.exe 应用程序? (并且只有这个脚本启动的 acServer.exe 的实例)以及“”在启动命令之后做什么?
    • start 认为它遇到的第一组双引号是窗口标题,这可能会破坏您的代码。 "" 将第一组引号排除在外,以防 acServer.exe 的路径包含需要用引号括起来的空格。如果您正在寻找一个事件监听器来监视脚本的状态,那么如果不编写第二个脚本来监视第一个脚本,batch 就没有类似的东西。
    • 我不是在寻找事件监听器,我只想在我结束/关闭脚本时关闭两个应用程序。这可能吗?
    • 你可以运行taskkill /IM acServer.exe来杀死acserver进程。
    • 是的,但这会杀死所有具有该名称的进程。我只想要由这个批处理文件启动的那个被杀死的。 (因为这个批处理会有多个实例运行)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多