搜索
查看: 631|回复: 5

[分享] 守护迅雷进程的批处理 [复制链接]

Rank: 7Rank: 7Rank: 7

UID
649063
帖子
1392
PB币
1529
贡献
0
技术
23
活跃
2294
发表于 2021-1-14 13:00:20 |显示全部楼层
快御云安全
绿色迅雷11老是会莫名退出,不知道什么原因,懒得去反馈和深究。于是有了这个批处理,原理很简单,就是每隔5分钟检查Thunder.ex进程是否存在,如果不存在就运行它:@echo off
mode con cols=48 lines=5
mode con cp select=936>nul
title 守护迅雷进程
color 0a&cls

set "thunder=C:\prog\Thunder Network\Thunder\Program\Thunder.exe"
if not exist "%thunder%" (color 0c&echo;迅雷程序不存在,请修改批处理!&timeout /T 5 >nul&goto END) else (call :GET_PROG_PATH "%thunder%" thunderpath)

set /a "n=0,n1=0"
:LOOP
    if %n1% gtr 1000 (color 0c&echo;已重试%n1%次启动迅雷都不成功,本批处理将退出!&timeout /t 600 >nul&goto END)

    tasklist /nh /fi "imagename eq Thunder.exe" 2>nul|find /i "Thunder.exe" 1>nul 2>nul
    if %errorlevel% equ 0 (
        if %n% equ 0 (cls&echo;迅雷运行中...) else (cls&echo;第%n%次启动迅雷!&echo;迅雷运行中...)
        set /a "n1=0"
        SETLOCAL ENABLEDELAYEDEXPANSION
        echo;
        choice /C DE /N /T 300 /D D /M "要退出守护请按E:"
        if !errorlevel! equ 2 (ENDLOCAL&goto END) else (ENDLOCAL&goto LOOP)
        ENDLOCAL
    ) else (
        cls&echo;正在启动迅雷...&set /a "n+=1,n1+=1"

        :+ 直接运行Thunder.exe,在运行之后不会返回批处理,直到Thunder.exe进程结束后才返回。
        rem "%thunder%"

        :+ 以START运行Thunder.exe,在运行之后会返回批处理,但Thunder.exe进程是在本批处理进程树下的进程,强制结束本批处理也会结束Thunder.exe进程。
        rem start "启动迅雷" /d "%thunderpath%" /i /min /ABOVENORMAL "%thunder%" 1>nul 2>nul

        :+ 以VBS ShellExecute调用Thunder.exe似乎可避免上述两种情况。
        if not exist "%temp%" (color 0c&echo;系统临时目录不存在,批处理将退出!&timeout /T 5 >nul&goto END)
        set "params="
        set "params=%*%params%"
        SETLOCAL ENABLEDELAYEDEXPANSION
        set "params1="
        if not "!params!"=="" (set params1=!params:^"=^"^"!)
        ENDLOCAL&if not "%params1%"=="" (set "params=%params1%")
        (echo;set objShell=CreateObject^("Shell.Application"^):objShell.ShellExecute "cmd.exe", "/C start ""启动迅雷"" /D ""%thunderpath%"" /I /MIN /ABOVENORMAL ""%thunder%""", "%thunderpath%", "open", 0)>"%temp%\StartThunder.vbs"&&"%temp%\StartThunder.vbs"
        timeout /t 10 >nul&goto LOOP
    )

goto END


:GET_PROG_PATH
    set "%2=%~dp1"
    goto:eof


:END
if exist "%temp%\StartThunder.vbs" (del /f /q "%temp%\StartThunder.vbs" 1>nul 2>nul)
exit /b 0


守护迅雷进程.zip (1.19 KB, 下载次数: 1)


Rank: 9

UID
4810910
帖子
3252
PB币
789
贡献
0
技术
2
活跃
1993
发表于 2021-1-14 13:04:38 |显示全部楼层
路过帮顶,消灭零回复

Rank: 11Rank: 11Rank: 11

UID
4787013
帖子
9190
PB币
6169
贡献
0
技术
2
活跃
1598
发表于 2021-1-14 14:01:53 |显示全部楼层
路过帮顶

Rank: 9

UID
383043
帖子
4416
PB币
4653
贡献
0
技术
0
活跃
931
发表于 2021-1-14 14:08:22 |显示全部楼层
很少用它下载了

Rank: 2Rank: 2

UID
4724955
帖子
158
PB币
10
贡献
0
技术
0
活跃
436
发表于 2021-1-14 14:40:58 |显示全部楼层
这和原版安装版迅雷11有啥区别呢,便携版?

Rank: 5Rank: 5Rank: 5

UID
2858426
帖子
605
PB币
645
贡献
0
技术
0
活跃
425
发表于 2021-1-14 16:39:21 |显示全部楼层
路过学习学习,  谢谢分享
回顶部
Copyright (C) 2005-2021 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛