【BAT】BATWindows自动脚本同步GitHub远程仓库


title: 【BAT】BATWindows自动脚本同步GitHub远程仓库
date: 2020-01-21 20:01:34
tags: BAT
categories: 知识记录

Windows自动脚本,我已自动同步GitHub仓库为例。

一、编写自动脚本

先上源码,可以直接用TXT写,然后将文件后缀改为.bat。

start "C:\Windows\System32\cmd.exe"
cd /
G:
cd Goulandis\Git\Temp
git add .
git commit -m "From Auto Updata"
git push
pause
  • start “C:\Windows\System32\cmd.exe”:打开Windows CMD控制台
  • cd /:切换到根目录,加这一句的目的在于可以不需要将脚本放在仓库的所在的文件夹下运行,这样就可以将脚本放在任意位置运行
  • G:切换到G盘,因为我的Git仓库放在G盘
  • cd Git\Temp:进入远程仓库所在的文件夹Temp,我的远程仓库放在G:/Goulandis/Git/Temp文件夹下
  • git add .git push是git同步远程仓库的命令
  • pause:pause命令用于暂停命令继续执行,本例中可有可无,这里加上主要是为了方便查看执行过程
  • taskkill /f /im cmd.exe:自动关闭CMD

双击运行,测试一下执行效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DQPRFXr0-1591020559313)(【BAT】BATWindows自动脚本同步GitHub远程仓库/Snipaste_2020-01-21_16-04-19.png)]

如果想要脚本在CMD命令行的任意位置都可以调用执行的话,可以给脚本专门创建一个文件夹,将脚本放入其中,然后再将此路径添加到Windows的环境变量中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UzNoawvw-1591020559317)(【BAT】BATWindows自动脚本同步GitHub远程仓库/Snipaste_2020-01-21_16-29-49.png)]

然后,我们再测试运行一下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TkL1RQp6-1591020559319)(【BAT】BATWindows自动脚本同步GitHub远程仓库/Snipaste_2020-01-21_16-31-22.png)]

我的脚本名字叫GitPushTemp.bat,执行成功

二、让脚本自动执行

要向让脚本定时自动自行,我就需要用的Windows的自动任务计划程序,Windows实现自动任务有三种常用的方法:

  • Windows任务计划程序
  • Windows Service
  • SQL Agent的Job

我这里使用Windows任务计划程序为例。

只需要将我们的脚本程序添加到Windows任务计划程序中,设定好执行时间,就可以实现脚本的定时自动执行了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5TsJveJS-1591020559321)(【BAT】BATWindows自动脚本同步GitHub远程仓库/Snipaste_2020-01-21_16-37-15.png)]

创建一个定时任务按照提示添加进入脚本,就可以了,到点之后脚本就会自动执行。

三、DOS语法

上面的脚本算是极其简单的脚本了,要想编写功能更为强大脚本,我们就需要了解一些DOS语法了。

我先来看一个复杂点的脚本,这里以脚本为例,选择一些较为常用的语法来介绍

Test.bat

rem Test.bat
start "C:\Windows\System32\cmd.exe"
for %%i in (1,2,3) do call l1.bat

l1.bat

rem l1.bat
choice /C 123 /M "选择执行分路md"
if errorlevel 3 goto l3
if errorlevel 2 goto l2
if errorlevel 1 goto l1
:l3
call l1.bat
goto end
:l2
echo "你选择了支路2"
goto end
:l1
echo "你选择了支路1"
goto end
:end
pause

  • rem Test.bat:rem是DOS中注释标识符。
  • for %%i in (1,2,3) do call l1.bat:类是python中for i in list:%%i就是i参数,%%后的字母可以是任何字母不一定非要是i,(1,2,3)就是list,括号中有几个元素for循环就循环几次,每次执行将括号中的元素复值给%%i,do之后能且仅能接一句DOS命令作为循环体语句,%%i可以在 do之后的循环体语句中使用,DOS的for循环必须使用多脚本调用的形式才能实现多执行体的循环。
  • choice /C 123 /M “选择执行分路md”:控制台输入,默认输入为Y/N,使用/C可以自定义输入,123就是我们的自定义的输入。choice之后可以很多参数,各有不同的功能,这里不多累述。
  • if errorlevel 3 goto l3:if和for一样之后也能且只能接一句执行语句,所以多和goto配合执行多执行体的条件语句,errorlevel是配合choice使用的参数,用于接受choice的输入值,其后跟判断值,这样就可以实现判断输入值是否符合条件。
  • goto:DOS的goto使用方法和C语言的goto是一样的。

你可能感兴趣的:(知识记录,.bat)