windows_bat后台运行,无doc窗口

运行 bat 并隐藏 doc 窗口


执行bat并隐藏doc窗口

  • 新建一个 vb 文件为 XXX.vbe ,加入代码

    1
    2
    set ws=wscript.createobject("wscript.shell")
    ws.run "run.bat /start",0
    • run.bat 为待执行的批处理文件

    •   最后那个0是指窗口参数,用法为:

        0 隐藏窗口并激活另一窗口。

        1 激活并显示一个窗口。若窗口是最小化或最大化,则恢复到其原来的大小和位置。

        2 激活窗口并以最小化显示该窗口。

        3 激活窗口并以最大化显示该窗口。

        4 按窗口最近的大小和位置显示。活动窗口保持活动。

        5 以当前大小和位置激活并显示窗口。

        6 最小化指定窗口并激活按 Z 序排序的下一个顶层窗口。

        7 最小化显示窗口。活动窗口保持活动。

        8 以当前状态显示窗口。活动窗口保持活动。

        9 激活并显示窗口。若窗口是最小化或最大化,则恢复到原来的大小和位置。在还原应用程序的最小化窗口时,应指定该标志。


后台执行

  • 执行命令 start /b run.bat 就是后台运行 run.bat

  • 比如需要运行多个 run.bat,每一个bat都是一个客户端,并且不会阻塞,可以新建一个bat为 run_multi_client.bat ,加入一下内容

    1
    2
    3
    start /b run.bat
    start /b run.bat
    start /b run.bat
  • 或者使用 py 定时执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #!/usr/bin/env python
    #-*- coding: utf-8 -*-

    import os
    import sys
    from threading import Timer
    import platform

    SelfPath = os.getcwd()
    counter = 1
    total = 3 # 执行次数


    def ExecFunc():
    cmd = "start /b run.bat"
    os.system(cmd)
    pass

    def TmpFunc(interval):
    global counter
    ExecFunc()

    if counter > 0 and counter < total:
    counter = counter + 1
    t = Timer(interval, TmpFunc, (interval,))
    t.start()
    pass

    def StartTimer(interval):
    t = Timer(interval, TmpFunc, (interval,))
    t.start()
    pass

    def main():
    StartTimer(3)
    pass

    if __name__ == '__main__':
    main()

参考资料