- @echo off
- ::定义要启动的程序名称
- set "pro_name=QQ.exe"
- for /f "delims=" %%a in ("%pro_name%") do set "name=%%~na_path"
- ::如果记录路径的文件存在则直接提取程序路径
- if not exist c:\windows\%name%.txt goto :0001
- for /f "delims=" %%a in (c:\windows\%name%.txt) do (
- set pro_path=%%~a
- set p_name=%%~nxa
- )
- if /i "%p_name%"=="%pro_name%" goto :0002
-
- :0001
- echo 正在搜索 %pro_name%,请稍等...
- for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
- if exist %%a:\ (
- pushd %%a:\
- for /r %%b in ("*%pro_name%") do (
- if /i "%%~nxb"=="%pro_name%" set "pro_path=%%b")
- popd
- ))
- ::用文本记录程序路径以便下次快速获取
- echo/%pro_path%>c:\windows\%name%.txt&cls
- if not "%pro_path%"=="" (
- echo 检测成功,程序安装在:%pro_path%
- ) else (
- echo 没有检测到 %pro_name% 程序!
- ping 127.1 /n ^3>nul&&exit/b
- )
-
- :0002
- ::检测程序是否运行
- tasklist|find /i "%pro_name%" >nul||goto :0003
- echo 程序已经在运行,3秒后自动退出...
- ping 127.1 /n ^3>nul&&exit/b
-
- :0003
- cls
- echo 已经启动提问提示框,如果运行该程序请点击“是”按扭!
- echo Wsh.Echo MsgBox(" 你想运行%pro_name%吗?",vbYesNo,"询问")>ask.vbs
- for /f %%d in ('cscript ask.vbs //nologo //e:vbscript') do if %%d equ 6 (del ask.vbs&&goto :0004)
- cls
- echo 你没有选择启动程序,3秒后自动退出...
- del ask.vbs
- ping 127.1 /n ^3>nul&&exit/b
-
- :0004
- cls
- echo 正在启动 %pro_name% ...
- start "" "%pro_path%"
- ping 127.1 /n ^5>nul
- start "" c:\test\test.bat
- exit/b
复制代码
完善一下之前的代码,增加对记录路径文本的内容检测,把全盘搜索用 for /r 语句代替,提高搜索文件的速度。
[ 本帖最后由 newxso 于 2009-3-15 21:05 编辑 ] |