• 程序员必备技能:Windows使用bat脚本实现软件进程检测


    前言

    通常为例保证软件的正常进行,都会以监听的形式对目标程序进行存活检测,本文使用bat脚本以守护微信进程为例进行演示。

    概述

    批处理文件,在DOS和Windows(任意)系统中,.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。

    bat实现守护

    脚本代码:

    @echo off
    
    :run
    
    :: 标题定义
    title sanxingtest
    
    :: 当前路径
    set strPath=%~dp0
    
    :: 带绝对路径的文件名
    set strFile=%strPath%%date:~0,4%%date:~5,2%%date:~8,2%.log
    
    :: 输出时间到文件
    echo [%time%] >>%strFile%
    
    :: 输出计算器的进程信息到文件
    :: tasklist -nh -fo csv -fi "IMAGENAME eq WeChat.exe" >>%strFile%
    tasklist -fi "IMAGENAME eq WeChat.exe" >>%strFile%
    
    :: 下面是检查进程是否存在,不存在启动当前路径下的脚本文件1.bat
    tasklist|find /i "WeChat.exe"
    if %errorlevel%==0 (
    	echo 微信已存在
    ) else (
    	echo 微信不存在,启动
    	start  /d"C:/Program Files (x86)/Tencent/WeChat" WeChat.exe
      	
    )
    :: 定时10秒
    choice /t 10 /d y /n >nul
    
    goto run
    
    
    • 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

    效果如下:

    在这里插入图片描述

    go start实现:

    :start
    
    choice /t 10 /d y /n >nul
    tasklist|find /i " WeChat.exe" 
    
    if %errorlevel%==0 ( 
    	echo 微信已存在
    ) else (
    	echo 微信不存在,启动
    	start  /d"C:/Program Files (x86)/Tencent/WeChat" WeChat.exe
    )
    goto start 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    小拓展

    1、bat文件执行乱码问题

    解:修改编码格式为ANSI

    2、后台运行bat文件

    @echo off
    if "%1"=="h" goto begin
    start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
    :begin
    ::下面是你的代码。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3、linux java进程检测

    #!/bin/sh
    while true;do
    count=`ps -ef|grep java|grep -v grep`
    if [ "$?" != "0" ];then
    echo "java is running"
    else
    echo "java is stop..."
    break
    fi
    sleep 10
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4、清理垃圾

    命令代码如下:

    @echo off
    echo 正在清除系统垃圾文件,请稍等......
    del /f /s /q %systemdrive%\*.tmp
    del /f /s /q %systemdrive%\*._mp
    del /f /s /q %systemdrive%\*.log
    del /f /s /q %systemdrive%\*.gid
    del /f /s /q %systemdrive%\*.chk
    del /f /s /q %systemdrive%\*.old
    del /f /s /q %systemdrive%\recycled\*.*
    del /f /s /q %windir%\*.bak
    del /f /s /q %windir%\prefetch\*.*
    rd /s /q %windir%\temp & md %windir%\temp
    del /f /q %userprofile%\cookies\*.*
    del /f /q %userprofile%\recent\*.*
    del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
    del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
    del /f /s /q "%userprofile%\recent\*.*"
    echo 清除系统垃圾文件完成!
    pause
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    5、网络设置

    @echo off
    ::判断本地连接赋值a
    for /f "tokens=3,4 delims== " %%i in ('ipconfig ^|findstr /r "本"') do echo %%i %%j >DNS.txt
    for /f "tokens=1 delims==:" %%d in (DNS.txt) do set a=%%d
    echo 请根据实际情况更改下面三行
    set slection1=
    set/p slection1=请输入IP地址:
    netsh interface ip set address name="%a%" source=static addr=%slection1% mask=255.255.255.0
    set slection2=
    set/p slection2=请输入网关地址:
    netsh interface ip set address name="%a%" gateway=%slection2% gwmetric=0
    set slection3=
    set/p slection3=请输入主dns地址
    netsh interface ip set dns name="%a%" source=static addr=%slection3% register=PRIMARY
    set slection4=
    set/p slection4=请输入备份dns地址
    netsh interface ip add dns name="%a%" addr=%slection4%
    netsh interface ip set wins name="%a%" source=static addr=none
    del DNS.txt
    exit 改完IP后可用这个完成本机ARP的绑定:
    @echo off
    if exist ipconfig.txt del ipconfig.txt
    ipconfig /all >ipconfig.txt
    if exist phyaddr.txt del phyaddr.txt
    find "Physical Address" ipconfig.txt >phyaddr.txt
    for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M
    if exist IPAddr.txt del IPaddr.txt
    find "IP Address" ipconfig.txt >IPAddr.txt
    for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I
    arp -s %IP% %Mac%
    del ipaddr.txt
    del ipconfig.txt
    del phyaddr.txt
    exit
    
    • 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

    6、调用bat时动态传参

    内容如下:

    @echo off
    set username = %1%
    set password = %2%
    
    start java -jar test.jar %username% %password%
    
    • 1
    • 2
    • 3
    • 4
    • 5

    7、背景颜色窗口大小设置

    color 1F – 设置颜色,1F前面表示背景颜色,后面表示字体颜色,代表颜色如下:

    0=黑、1=蓝、2=绿、3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白

    mode con cols=100 lines=60 – 设置窗口大小,cols表示宽度,lines表示高度

    在这里插入图片描述
    点赞 收藏 关注

  • 相关阅读:
    28、Java高级特性——集合:Set接口、HashSet集合、Map接口、 Map集合
    网站变灰,6行代码,通通变灰
    Android实现富文本展示
    创作一款表情包生成微信小程序:功能详解与用户体验优化
    linux 设置在连续输错错误密码n次后,锁定该用户
    【信号处理】CFO估计技术(Matlab代码实现)
    【POJ No. 3635】 加满油箱 Full Tank?
    多项分布模拟及 Seaborn 可视化教程
    IT运维:使用数据分析平台监控Windows Eventlog
    Fiddler弱网测试
  • 原文地址:https://blog.csdn.net/qq_35764295/article/details/126759300