【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是一樣的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章