bat脚本批量启动程序

有些时候我们开发需要固定启动某些程序,每次电脑开机都需要一次一次的点

现在只需要写一个bat脚本就可以实现批量一键启动多个应用,把一下内容存储到一个bat文件就好,名字随意

:::: @echo off 表示在此语句后所有运行的命令都不显示命令行本身 @echo on
@echo off
REM 声明采用UTF-8编码 REM命令是注释命令
chcp 65001

SET Obj_Length=5
rem 启动谷歌服务参数
SET Obj[0].path="C:UsersadminAppDataLocalGoogleChromeApplication"
SET Obj[0].serverPath="C:UsersadminAppDataLocalGoogleChromeApplicationchrome"
SET Obj[0].serverName="chrome"
SET Obj[0].serverTitle="启动chrome"
rem 启动Notepad服务参数
SET Obj[1].path="C:Program FilesNotepad++"
SET Obj[1].serverPath="C:Program FilesNotepad++ otepad++"
SET Obj[1].serverName="notepad++"
SET Obj[1].serverTitle="启动notepad++"
rem 启动Navicat服务参数
SET Obj[2].path="C:softNavicat Premium 12"
SET Obj[2].serverPath="C:softNavicat Premium 12 avicat"
SET Obj[2].serverName="navicat"
SET Obj[2].serverTitle="启动navicat"
rem 启动YoudaoNote服务参数
SET Obj[3].path="C:Program Files (x86)YoudaoYoudaoNote"
SET Obj[3].serverPath="C:Program Files (x86)YoudaoYoudaoNote"
SET Obj[3].serverName="YoudaoNote"
SET Obj[3].serverTitle="启动YoudaoNote"
rem 启动IDEA服务参数
SET Obj[4].path="C:Program FilesJetBrainsIntelliJ IDEA 2020.2.3in"
SET Obj[4].serverPath="C:Program FilesJetBrainsIntelliJ IDEA 2020.2.3in"
SET Obj[4].serverName="idea64"
SET Obj[4].serverTitle="启动idea64"
rem 延时3秒执行
SET delay_time=3
SET Obj_Index=0
set out_server=0

rem 循环便利执行
:LoopStart
IF %Obj_Index% EQU %Obj_Length% GOTO :EOF

SET Obj_Current.path=""
SET Obj_Current.serverPath=""
SET Obj_Current.serverName=""
SET Obj_Current.serverTitle=""
rem 赋值对象里面的参数到 Obj_Current 内
FOR /F "usebackq delims==. tokens=1-3" %%I IN (`SET Obj[%Obj_Index%]`) DO (
SET Obj_Current.%%J=%%K
)
ECHO path = %Obj_Current.path%
ECHO serverPath = %Obj_Current.serverPath%
ECHO serverName = %Obj_Current.serverName%
ECHO serverTitle = %Obj_Current.serverTitle%
rem 延时函数
timeout /t %delay_time%
set /a out_server=0
echo 延时3秒执行
echo 开始---启动%Obj_Current.serverName%服务
tasklist|find /i %Obj_Current.serverName% && set /a out_server=1
echo out_server = %out_server%
if %out_server% == 1 (
echo %Obj_Current.serverName% 服务已启动成功,无需重新启动
)^
else if exist %Obj_Current.serverPath% (
cd %Obj_Current.path%
start %Obj_Current.serverName%
echo 启动 %Obj_Current.serverName% 成功
)^
else (
echo 该文件夹下不存在 %Obj_Current.serverName%
)
SET /A Obj_Index=%Obj_Index% + 1
GOTO LoopStart
REM pause 表示不关闭窗口,如果没有pause 执行完代码就关闭cmd窗口
pause

  表示服务数量,如果添加启动程序,这个要记得添加长度

Obj_Length
表示程序在电脑中的安装路径
SET Obj[0].path="C:UsersadminAppDataLocalGoogleChromeApplication"

  表示程序在电脑中的安装路径

SET Obj[0].serverPath="C:UsersadminAppDataLocalGoogleChromeApplicationchrome"

  serverName表示电脑软件的exe名称

SET Obj[0].serverName="chrome"

  表示启动程序时候的标题,非必填

SET Obj[0].serverTitle="启动chrome"
这些都要是更具电脑中实际软件安装位置来定义的,视情况而定
是不是很方便!!!!!!!!!!!!!!!!!!
此脚本仅供参考,有什么意见或者建议欢迎提问.

因为每个软件的名称不一样,会有很多莫名其妙的事情发生,最好每个软件都单独写一个启动脚本,所以可以这么写
:::: @echo off  表示在此语句后所有运行的命令都不显示命令行本身 @echo on
@echo off
REM 声明采用UTF-8编码  REM命令是注释命令
chcp 65001

echo 开始---启动谷歌服务
rem 判断服务是否已经启动
set out_server=0
tasklist|find /i "chrome.exe" && set /a out_server=1
echo out_server = %out_server%
if %out_server% == 1 (
    echo chrome 服务已启动成功,无需重新启动
)^
else if exist C:UsersadminAppDataLocalGoogleChromeApplicationchrome.exe (
    start C:UsersadminAppDataLocalGoogleChromeApplicationchrome.exe http://www.baidu.com
    echo 启动 chrome 成功
)^
else (
    echo 该文件夹下不存在 chrome
)
set /a out_server=0

timeout /t  3
echo 延时3秒执行
echo 开始---启动notepad++ 服务
tasklist|find /i "notepad++.exe" && set /a out_server=1
echo out_server = %out_server%
if %out_server% == 1 (
    echo notepad++ 服务已启动成功,无需重新启动
)^
else if exist "C:Program FilesNotepad++
otepad++.exe" (
    cd C:Program FilesNotepad++
    start notepad++
    echo 启动 notepad 成功
)^
else (
    echo 该文件夹下不存在 notepad
)
set /a out_server=0


timeout /t  3
echo 延时3秒执行
echo 开始---启动Navicat 服务
tasklist|find /i "navicat" && set /a out_server=1
echo out_server = %out_server%
if %out_server% == 1 (
    echo navicat 服务已启动成功,无需重新启动
)^
else if exist "C:softNavicat Premium 12
avicat.exe" (
    cd C:softNavicat Premium 12
    start navicat
    echo 启动 navicat 成功
)^
else (
    echo 该文件夹下不存在 navicat
)
set /a out_server=0

timeout /t  3
echo 延时3秒执行
echo 开始---启动 YoudaoNote 有道云笔记 服务
tasklist|find /i  "YoudaoNote" && set /a out_server=1
echo out_server=%out_server%
pause
if %out_server% == 1 (
    echo YoudaoNote 服务已启动成功,无需重新启动
)^
else if exist C:Program Files (x86)YoudaoYoudaoNote (
    cd C:Program Files (x86)YoudaoYoudaoNote
    start YoudaoNote
    echo 启动 YoudaoNote 有道云笔记 成功
)^
else (
    echo 该文件夹下不存在 YoudaoNote 有道云笔记
)
set /a out_server=0

timeout /t  3
echo 延时3秒执行
echo 开始---启动IntelliJ 服务
tasklist|find /i "idea64" && set /a out_server=1
echo out_server = %out_server%
if %out_server% == 1 (
    echo idea64 服务已启动成功,无需重新启动
)^
else if exist C:Program FilesJetBrainsIntelliJ IDEA 2020.2.3in (
    cd C:Program FilesJetBrainsIntelliJ IDEA 2020.2.3in
    start idea64
    echo 启动 idea 成功
)^
else (
    echo 该文件夹下不存在 idea64
)
REM pause 表示不关闭窗口,如果没有pause 执行完代码就关闭cmd窗口
echo 所有启动成功
::::exit
pause

 





原文地址:https://www.cnblogs.com/procedureMonkey/p/14216650.html