VBSscript实现后台运行Windows bat脚本

VBScript 是Visual Basic 语言的轻量级版本,本文介绍使用VBS实现在后台运行bat脚本。

先编写一个简单的bat脚本(test_bat.bat):使用Python打开一个简单的 http 服务器

@echo off

echo start
cmd /k "python -m http.server 8100"
echo end
pause

下面来测试一下这个脚本,双击test_bat.bat,会打开如下窗口:

浏览器访问 http://127.0.0.1:8100/

可以看到HTTP服务搭建成功。

也可以使用 netstat 命令查看8100端口对应服务是否启动:

$ netstat -nao | findstr 8100
  TCP    0.0.0.0:8100           0.0.0.0:0              LISTENING       17220
  TCP    127.0.0.1:1024         127.0.0.1:8100         TIME_WAIT       0
$ 
$ tasklist | findstr 17220
python.exe                   17220 Console                    1     18,800 K

如何实现在后台运行呢?可以使用VBScript来实现。

编写vbs文件test_bat.vbs:

Set WshShell = CreateObject("WScript.Shell") 
WshShell.Run chr(34) & "test_bat.bat" & Chr(34), 0

0 表示后台运行,如果设置为1,会显示cmd窗口。

双击test_bat.vbs运行,浏览器访问 http://127.0.0.1:8100/ 查看服务是否启动 或者使用如下命令:

$ netstat -nao | findstr 8100
  TCP    0.0.0.0:8100           0.0.0.0:0              LISTENING       1788

$ tasklist | findstr 1788
python.exe                    1788 Console                    1     18,680 K

可以看到HTTP server启动成功。

杀掉HTTP server:

$ taskkill -pid 1788 -f -t
SUCCESS: The process with PID 1788 (child process of PID 18576) has been terminated.

如果bat脚本需要传入参数怎么实现呢?可以使用WScript.Arguments对象获取参数,下面直接给出实现方式,将端口号作为参数传入:

test_bat2.bat:

@echo off

echo start
python -m http.server %1
echo end

pause

test_bat2.vbs:

dim args
Set args = WScript.Arguments
Set WshShell = CreateObject("WScript.Shell") 

WshShell.run "cmd /c " &args(0) &args(1),0

cmd命令窗口运行

$ test_bat2.vbs test_bat2.bat " 8100"

在实际使用过程中,通常不会手动双击运行脚本,比如在自动化测试中,需要自动启动一个tshark抓包程序, 我们只需要它在后台运行。下面举一个Python运行bat脚本的示例程序。

def start_bat(self, port):
    """启动 HTTP server
    :port: 服务端口号
    """
    self.stop_process(port)
    dir_path = os.path.dirname(os.path.realpath(__file__))  # 当前路径
    print(dir_path)

    os.system(f'{dir_path}/test_bat.vbs "{dir_path}/test_bat.bat" " {port}"')

    for l in range(3):
        sleep(3)
        if self.check_process(port):
            print("http server successfully")
            return True
    print("http server started failed")
    return False

完整代码:https://github.com/hiyongz/ShellNotes/blob/main/test_vbs.py

--THE END--
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VBSscript程序员参考手册.pdf是一本专门为VBSscript程序员编写的参考手册。这本手册的目的是为了帮助程序员更好地了解和掌握VBScript编程语言,并提供他们所需的信息和资源。 手册的内容丰富而全面,涵盖了VBScript语言的各个方面。首先,它详细介绍了VBScript的基础知识,包括数据类型、变量、运算符、条件语句、循环语句等等。这些基础知识是编写任何VBScript程序的必备知识。 此外,手册还介绍了VBSscript的高级特性,如函数、过程、对象和类的使用方法。这些高级特性可帮助开发人员更加灵活和高效地编写程序,并利用VBSscript的强大功能来解决实际问题。 手册还提供了大量的实例代码和示例,以便程序员更好地理解VBScript的应用。这些示例覆盖了各种常见的编程场景,如文件和文件夹操作、数据处理、错误处理等等。通过这些实例,程序员可以学习编写更加优雅和可读性的代码。 此外,手册还介绍了一些有关调试和优化的技巧。对于新手来说,调试是一个重要的技能,可以帮助他们找到并解决程序中的错误。手册中的调试技巧将帮助他们更好地理解和解决问题。 总而言之,VBSscript程序员参考手册.pdf是一本非常实用和全面的资源,适用于所有程度的VBScript程序员。无论是初学者还是经验丰富的开发人员,都可以从中获取到所需的知识和信息,并将其应用到实际的项目中。这本手册将成为VBSscript程序员学习和开发的重要工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值