【问题标题】:Execute Batch File With Different Process Name执行具有不同进程名称的批处理文件
【发布时间】:2014-12-17 08:51:03
【问题描述】:

我有 6 个不同的批处理脚本同时运行。问题是,在 Windows 任务管理器中很难区分它们,因为进程始终只是 cmd.exe 我想知道是否有办法将批处理脚本的进程名称更改为其他东西,以便每个脚本更容易识别。

到目前为止,我已经对此主题进行了大量研究,唯一的线索是在 system32 中创建一个具有不同名称的 cmd.exe 副本,这是我选择的一个.问题是,我不确定如何让我的 bash 脚本使用这个具有不同名称的新可执行文件,而不是默认的 cmd.exe

要求:只能使用内置的 Windows 功能。如果可能,我不想安装任何其他程序。

【问题讨论】:

  • 如果使用TITLE命令呢?在较新的taskmanagers win7/8..可以看到进程的标题
  • 这不能满足我的需要,因为它只会改变窗口标题。我需要更改 进程名称,这样当我转到 Windows 任务管理器 > 进程时,我可以看到 cmd.exe 以外的其他内容

标签: windows batch-file process cmd taskmanager


【解决方案1】:

您可以在任务管理器中看到命令行,将其打开查看菜单 - 选择列

如果要更改进程名称,则必须更改进程。所以你的方法是唯一的方法。

【讨论】:

    【解决方案2】:

    你可以用下面的子程序来做。第一个 goto 的原因是为了让你完成后不会陷入子程序。我合并了另一个 FOR 循环来遍历要检查的文件名列表。让我们先让它工作。

    Your existing bat file goes here
    CALL :IsitRunning "SomeFileName"
    The rest of your existing bat file goes here
    GOTO :eof
    
    :IsitRunning
    REM 1=Filename
    FOR /F "delims=" %%A in ('WMIC PROCESS WHERE NAME^='CMD.EXE' LIST FULL ^| FINDSTR /I "%~1" ^| FINDSTR /I /V WMIC') DO ECHO(%~1 is running
    GOTO :eof
    

    或者您可以在 CMD 提示符下运行此命令。

    wmic process WHERE NAME='cmd.exe' list full | findstr /i "SomeFileName.bat"
    

    【讨论】:

    • 有什么方法可以将此功能合并到我的 bat 文件中,这样我就不必拥有 2 个单独的文件?另外,我认为您在其中缺少一个右括号。
    • 没有遗漏括号。你可能会对 ECHO(. 使用 ECHO. 而不是如果你喜欢。我将编辑以显示用法。
    • 我测试了发布的代码,它确实有效。例如,如果您想查看 pin.bat 是否正在运行,请将 SomeFileName 替换为 pin.bat。我使用类似于遍历文件名列表并发布消息(如果有任何正在运行)的东西。如果您需要检查此 bat 文件的另一个副本是否正在运行,则需要添加计数,因为显然会有此副本...我想知道另一个副本是否正在运行。也许为了简化事情,我们应该从 CMD 提示符开始运行它。 wmic 进程 WHERE NAME='cmd.exe' 列表已满 | findstr /i "pin.bat"
    猜你喜欢
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2019-07-09
    • 1970-01-01
    相关资源
    最近更新 更多