继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【纯干货】小白都能看懂的windows常用bat批处理命令(附代码参考)

慕冬雪
关注TA
已关注
手记 78
粉丝 9132
获赞 5502

图片描述
没有镇楼的神兽我会不安的...
另外,我不会告诉你其实我是一个帅哥的...

前言:我们项目组现在发布项目都需要手动ant打包,然后在项目目录下复制要部署的程序包到项目发版工具目录下。因为我们有多个项目,要根据项目区分部部署,我比较懒,不想频繁切换目录,也不想频繁的ctrl c & ctrl v,因此今天上午自己写了一个批处理文件,基本能实现一键copy+部署。现总结一下我用到的和顺带了解的批处理命令...

图片描述
命令--------解释
命令/?:查看命令帮助
del 文件路径 : 删除文件
move 文件 路径:移动文件到指定的路径下(文件和路径中间有空格哈,下边俩一样)
copy文件 路径:复制文件到指定的路径下
rd 文件夹路径: 删除文件夹
图片描述
tree 文件夹路径: 查看文件夹结构图片描述
echo 确认的按钮|命令:一键执行确认操作命令图片描述
tasklist >list.txt :将所有进程保存到list文件中(默认保存到当前目录)
find /i "chrome.exe" list.txt :从list文件中查找chrome进程图片描述
@echo off :关闭回显
@echo on :开启回显
set 变量名=变量值:声明变量
%变量名% :调用变量
不同bat文件之间传值(最后面代码中会有实例):

//调用bat
xx.bat 参数:调用bat文件后面加空格然后跟上要传的参数,最后可传9个,每个参数之间用空格分隔
//另一个bat文件接收参数
%1--%9:%1到%9一共9个参数,分别依次对应

:: xxx:注释内容,不会显示到窗口
rem xx:注释内容,会显示到窗口
echo xx:注释内容,会显示到窗口

*winrar x iEnergy_ams.zip iEnergy_ams* :解压命令(需要把winrar安装路径下的winrar.exe放到c盘windows目录下)
图片描述
winrar a -r iEnergy_ams.zip
:压缩命令图片描述

至于压缩和解压缩,在winrar安装目录下的Rar.txt里有很详细的命令解释。另外,图中红色箭头指向的两个也是压缩和解压文件的工具,把他俩放到windows目录下同样可以通过rar、unrar执行压缩和解压操作,但是这两个和winrar的区别就在于:rar、unrar只能操作rar后缀的压缩文件,虽然通过rar也可以打成zip包,但事实上还是以rar格式为基础的,可以通过与zip包比较文件大小确定。

最后,贴一个我刚写的批处理文件:
主bat(负责定义公共变量和代码):

@echo off

:: 公共参数设置 start
cd %cd%
:: 跳转到上级目录
cd ../
:: 自动发版工具所在地址
set autoDeployPath=%cd%
::-------------------------该地址需要手动修改为本机项目打包后的地址-------------------------
::本机项目打包后的地址
set sourcePath=xxx\upload
::本机项目所在磁盘
set sourceDisk=D:
::-------------------------该地址需要手动修改为本机项目打包后的地址-------------------------
:: 公共参数设置 end

:: uat项目部署所在地址
set uatPath=%autoDeployPath%\resource\uat
set livePath=%autoDeployPath%\resource\live
set otePath=%autoDeployPath%\resource\ote
:: 公共参数设置 end
:: 先删除旧的项目包 live、uat、ote全部清空
echo ----清空uat文件夹----
echo y|del %uatPath%\*.*
echo ----清空live文件夹----
echo y|del %livePath%\*.*
echo ----清空ote文件夹----
echo y|del %otePath%\*.*

::清屏操作
cls
echo 文件部署工具根目录:%autoDeployPath%
cd %autoDeployPath%\bat-test
goto start
:start
    echo --------------------------------------------------
    echo --                  uat部署                     --
    echo --  1.www                                       --
    echo --  2.admin                                     --
    echo --  3.static                                    --
    echo --  4.all(该选项操作完成后会自动部署)             --
    echo --  5.deploy(需要先执行1或者2或者3)               --
    echo --  6.END                                       --
    echo --------------------------------------------------
    ECHO.
    echo (请输入数字选择操作命令)
    set /p ans=                   
    if %ans%==1 goto www
    if %ans%==2 goto admin
    if %ans%==3 goto static
    if %ans%==4 goto all
    if %ans%==5 goto deploy
    if %ans%==6 goto END
:www
    ECHO.
    echo ----执行www项目解压操作----
    :: 执行的逻辑命令--为bat文件传参
    start wwww.bat %uatPath% %sourcePath% %sourceDisk%
    echo ----www项目解压操作完成----
    goto start
:admin
    ECHO.
    echo ----执行admin项目解压操作----
    :: 执行的逻辑命令--为bat文件传参
    start admin.bat %uatPath% %sourcePath% %sourceDisk%
    echo ----admin项目解压操作完成----
    goto start
:static
    ECHO.
    echo ----执行static项目解压操作----
    :: 执行的逻辑命令--为bat文件传参
    start static.bat %uatPath% %sourcePath% %sourceDisk%
    echo ----static项目解压操作完成----
    goto start
:all
    ECHO.
    echo ----www、admin、static项目解压操作----
    :: 执行的逻辑命令--为bat文件传参
    start all.bat %uatPath% %sourcePath% %sourceDisk% %autoDeployPath%
    echo ----项目解压操作完成----
    exit
:deploy
    ECHO.
    echo ----执行部署任务----
    :: 执行的逻辑命令--为bat文件传参
    start deploy.bat %autoDeployPath%
    echo ----部署完成----
    goto END
:END
    ECHO.
    echo 退出批处理操作
pause

子文件(负责处理单个项目):

@echo off
:: 项目部署所在地址
set sysPath=%1
:: 项目打包后的地址
set sourcePath=%2
::本机项目所在磁盘
set sourceDisk=%3
:: 解压的路径
set unRarSourcePath=%sourcePath%\xxx

:: 进入项目zip所在的盘符根路径D盘
%sourceDisk%
:: 进入项目zip所在的文件夹
cd %sourcePath%

:: 复制文件到部署项目文件夹中
::copy xxx.zip %sysPath%

:: 解压文件 winrar命令要比单纯的rar或者unrar命令高级的多
winrar x xxx.zip * xxx\
:: 进入解压后字体所在文件夹
cd %unRarSourcePath%\WEB-INF\classes\resource\fonts
:: 删除文件夹下的所有文件
echo y|del *.*
:: 返回classes目录
cd %unRarSourcePath%\WEB-INF\classes
:: 删除resource文件夹
rd/s/q resource
:: 进入解压后的项目文件夹
cd %unRarSourcePath%
:: 将该文件夹下的所有内容从新打包 rar的压缩命令即使压缩为.zip但事实上还是以rar格式为基础的,可以通过比较文件大小确定
:: rar a -r xxx.zip *
winrar a -r xxx.zip *
:: 移动文件到部署项目文件夹中
move xxx.zip %sysPath%
cd %sourcePath%
:: 删除原解压的文件夹
rd/s/q xxx

exit

自认为代码写的还算干净...
图片描述

我可以对一个人无限的好,前提是值得。 ——慕冬雪

打开App,阅读手记
37人推荐
发表评论
随时随地看视频慕课网APP

热门评论

代码接着上面: 

:Analyze

if "%~1"=="crc32" (

    Tools\crc32.exe "%~2">Tools\crc32.tmp

    for /f "skip=4 delims=" %%i in (Tools\crc32.tmp) do (

        set "str=%%~i"

        set "str=!str:CRC of file %~2 =!"

        for /f "tokens=4 delims= " %%j in ('echo !str!') do set %~1=%%~j

        del /f /q Tools\crc32.tmp >nul 2>nul

        goto :eof

   )

)

for /f "skip=3 delims= " %%i in ('Tools\fciv.exe -%~1 "%~2"') do set %~1=%%~i

goto :eof

 

:ErrorMsg

cls & echo %ErrorMsg%,请重新输入。

ping 127.0.0.1 -n "2">nul

set "Dir=" & goto Input

代码接着上面: 

:Analyze

if "%~1"=="crc32" (

    Tools\crc32.exe "%~2">Tools\crc32.tmp

    for /f "skip=4 delims=" %%i in (Tools\crc32.tmp) do (

        set "str=%%~i"

        set "str=!str:CRC of file %~2 =!"

        for /f "tokens=4 delims= " %%j in ('echo !str!') do set %~1=%%~j

        del /f /q Tools\crc32.tmp >nul 2>nul

        goto :eof

   )

)

for /f "skip=3 delims= " %%i in ('Tools\fciv.exe -%~1 "%~2"') do set %~1=%%~i

goto :eof

 

:ErrorMsg

cls & echo %ErrorMsg%,请重新输入。

ping 127.0.0.1 -n "2">nul

set "Dir=" & goto Input

代码接着上面: 

del /f /q Tools\tmp.log "%Dir%\Analysis_Result.log" >nul 2>nul

for /r "%Dir%" %%a in (*) do (

    call :Analyze md5 "%%~a"

    call :Analyze sha1 "%%~a"

    call :Analyze crc32 "%%~a"

    (echo %%~a md5:!md5!   sha1:!sha1! crc32:!crc32!)>>Tools\tmp.log

    set "md5=" & set "sha1=" & set "crc32="

)

echo 分析结果日志文件 “Analysis_Result.log”已保存至“%Dir%”目录中。

copy Tools\tmp.log "%Dir%\Analysis_Result.log" >nul

del /f /q Tools\crc32.tmp Tools\tmp.log >nul 2>nul

pause

exit

查看全部评论