赞
踩
windows下开发微服务项目,一个模块采用一个git分支,每次开发都要手动切换多个分支,不胜其烦,决定采用bat脚本批量切换分支,决定了解下bat脚本常用语法。
1、脚本后缀.bat
,例如:test.bat、check_branch.bat、open_wechat.bat
2、rem
或::
表示注释
rem test.bat
:: test.bat
3、echo off
表示关闭命令回显,即不显示命令本身,只显示命令的输出
4、@
表示对本行命令关闭回显
5、@echo off
表示关闭命令回显,包括关闭本行命令回显
@echo off
rem it's test.bat
6、echo
表示输出内容到屏幕,echo后面跟着变量或字符串
@echo off
rem it's test.bat
echo hello,world
7、pause
作用是将dos窗口暂停关闭。pause可以用来查看脚本运行结果或调试脚本
@echo off
rem it's test.bat
echo hello,world
pause
8、title
用来设置dos窗口标题
@echo off
rem it's test.bat
title test脚本调试
echo hello,world
pause
9、chcp 65001
表示使用65001编码,解决中文乱码的问题
@echo off
chcp 65001
rem it's test.bat
title test脚本调试
echo hello,world
pause
上面示例脚本可以作为每个脚本的标配
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
11、获得当前路径
%cd%
%~dp0
12、进入指定目录,cd + 相对路径/绝对路径
cd test
13、清屏
cls
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
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
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
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
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
@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
19、>>
追加的方式重定向到文件夹中
20、>nul
将结果抛弃
21、字符串中是否包含某个字符串
语法:
echo 字符串 | findstr 子字符串 >nul && (
包含时的情况
)
包含的情况如下
示例:
@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
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
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。