当前位置:   article > 正文

bat批处理脚本编写_bat批处理编写

bat批处理编写

windows下开发微服务项目,一个模块采用一个git分支,每次开发都要手动切换多个分支,不胜其烦,决定采用bat脚本批量切换分支,决定了解下bat脚本常用语法。

1、脚本后缀.bat,例如:test.bat、check_branch.bat、open_wechat.bat
2、rem::表示注释

rem test.bat

:: test.bat
  • 1
  • 2
  • 3

3、echo off 表示关闭命令回显,即不显示命令本身,只显示命令的输出
4、@ 表示对本行命令关闭回显
5、@echo off 表示关闭命令回显,包括关闭本行命令回显

@echo off
rem it's test.bat
  • 1
  • 2

6、echo 表示输出内容到屏幕,echo后面跟着变量或字符串

@echo off
rem it's test.bat
echo hello,world
  • 1
  • 2
  • 3

7、pause 作用是将dos窗口暂停关闭。pause可以用来查看脚本运行结果或调试脚本

@echo off
rem it's test.bat
echo hello,world

pause
  • 1
  • 2
  • 3
  • 4
  • 5

8、title 用来设置dos窗口标题

@echo off
rem it's test.bat
title test脚本调试
echo hello,world

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

9、chcp 65001 表示使用65001编码,解决中文乱码的问题

@echo off
chcp 65001
rem it's test.bat

title test脚本调试
echo hello,world

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

上面示例脚本可以作为每个脚本的标配

10、set用来设置变量,使用变量则是%变量名%,系统变量则直接使用(省略了设置的过程),多个变量拼接就是顺着写。如果需要接收控制台输入的参数则是set /p 接收变量=提示语/p可以理解为param

@echo off
chcp 65001
rem it's test.bat

title test脚本调试

set name=buddha
echo %name%

echo %date% %time%

rem 接收控制台输入参数
set /p age=请输入年龄:

echo %age%

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述

11、获得当前路径

%cd%

%~dp0
  • 1
  • 2
  • 3

12、进入指定目录,cd + 相对路径/绝对路径

cd test
  • 1

13、清屏

cls
  • 1

14、start + 文件路径,就是打开某个普通文件或者程序文件

@echo off
chcp 65001
rem it's test.bat

title test脚本调试

rem 打开微信,路径如果有空格,则需要用引号
start "" "C:\Program Files\Tencent\WeChat\WeChat.exe"

start test\test.txt

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

15、函数声明使用:goto标识符可用于函数跳转,其中goto:eof可用于停止往下执行命令行。call可用于调用函数或调用别的bat脚步

@echo off
chcp 65001
rem it's test.bat

title test脚本调试

:func_test
    echo 这是一个test函数...
    echo 这是一个test测试函数
    pause
    goto :eof

:func_main
    echo 这是一个main函数...
    echo 这是一个main测试函数
    pause
    goto :eof

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这里插入图片描述

bat脚本的函数跟其它语言不太一样,不需要调用。如果没有命令控制,则会顺序执行

16、if用于条件判断,%errorlevel%是脚本内置变量,当值等于0,表示脚本执行到目前命令行还没有报错

@echo off
chcp 65001
rem it's test.bat

title test脚本调试

:func_test
    echo 这是一个test函数...
    echo 这是一个test测试函数
    if %errorlevel%==0 (
        call :func_main
    )
    pause
    goto :eof

:func_main
    echo 这是一个main函数...
    echo 这是一个main测试函数
    pause
    goto :eof

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

17、for用于循环

  • dir /b 路径,用于获得指定目录下的所有文件和文件夹
  • for /f,遍历指定目录下所有的文件和文件夹
  • for /d,遍历指定目录下所有的文件夹
  • for /r,遍历指定目录下所有的文件和文件夹中文件
  • %%i,循环遍历子变量,前面有两个%
@echo off
chcp 65001
rem it's test.bat

title test脚本调试

for /f %%i in ('dir /b "%cd%"') do (
    echo %%i
)

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

18、delims分隔符读取的字符串会以这些分隔符进行拆分成多个子字符串;tokens读取字符串会以索引值给变量

@echo off
chcp 65001
rem it's test.bat

title test脚本调试

rem 这里是逗号或斜线为分隔符
for /f "delims=,/" %%i in (test.txt) do (
    echo %%i
)

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

@echo off
chcp 65001
rem it's test.bat

title test脚本调试

for /f "delims=,/ tokens=1,2" %%a in (test.txt) do (
    echo 索引1:%%a
    echo 索引2:%%b
)

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述
19、>> 追加的方式重定向到文件夹中
20、>nul 将结果抛弃
21、字符串中是否包含某个字符串
语法:

echo 字符串 | findstr 子字符串 >nul && (
        包含时的情况
)
包含的情况如下
  • 1
  • 2
  • 3
  • 4

示例:

@echo off
chcp 65001
rem it's test.bat

title test脚本调试

echo "hello world" | findstr "world" >nul && (
        echo 包含
        pause
        goto :eof
)
echo 不包含
pause
goto :eof
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

22、字符串截取
示例:

@echo off
chcp 65001
rem it's test.bat

title test脚本调试

set teststr=*213123 hello world##
echo %teststr%

set str=%teststr:~1,-2%
echo %str%

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述
23、copy用来复制文件或文件夹

24、del 用来删除文件
25、setlocal enabledelayedexpansion,set local enable delayed expansion,意思就是扩展本地环境变量延迟
26、color 0A,设置背景色为黑色,前景色为淡绿色

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

综合示例:

@echo off
rem 批量切换代码bat脚本
chcp 65001
setlocal enabledelayedexpansion
color 0A

set /p input=请输入要切换的分支:


set DestPath=./
rem 循环当前目录里所有的文件夹
for /f "usebackq delims=" %%i in (`dir /b "%DestPath%"^|findstr -S "bbc"`)  do (
   if exist %%i\ (
		cd %%i
		git checkout -f %input%
		git fetch
		:: git status
		cd ../
   )
)

pause
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/459453
推荐阅读
相关标签
  

闽ICP备14008679号