看到越來越多的教學文,感覺這一版終於要開始活絡了呢
既然如此不貢獻一下感覺對不起自己(?
好,相信絕大多數的人都沒有聽過Batch這個玩意兒
我稍微簡介一下好了
Batch中文叫做"批次",而在電腦上則叫做"批次檔"
甚麼意思呢?你覺得電腦有甚麼東西是跟批次比較相關的?
你說永遠打不完的一整批報告?喔當然不是
在電腦的執行上,是由許許多多的指令來讓電腦做事情的
其他程式語言也是同樣的道理,透過程式語言對電腦下命令來讓電腦聽話的像一隻乖巧的小狗
並且讓他完成你生活中的大大小小的事情。
而Batch是基於Windows內建的"命令提示字元(又稱cmd)"一種程式語言
(但是嚴格來說說你要說他是一堆指令也不能說錯)
換句話說,如果你要開發手機或者Mac上的應用程式,那麼Batch可能不適合你。
而且這應該是最簡單的程式語言了我覺得.......
幾乎不需要記憶太多東西,而且"大小寫是通用的"(除了以後會介紹到的例外)
好啦,說了那麼多,我先來介紹最基本的就好了(絕對不是因為等等有課所以不能寫太多)
這時候有人要問了,"不用安裝其他軟體來寫嗎?"
哎呀,你的電腦就有這種東西了不需要阿
來,Win+R輸入notepad按下Enter,開啟了甚麼?
對,記事本。只需要用記事本就可以寫了喔!
但是因為記事本都是白底黑字,如果稍微長一點的程式碼看起來會非常亂
所以我建議還是去下載個Converter來寫,有顏色標示比較一目瞭然。
(我在最後面會放上下載網址,要的自己取用吧!)
好,開始吧
先上圖。
@echo off
echo Hello Meteor!
pause
光這裡就有很多要說了。
首先,你打完如上程式碼之後,你要存檔並且讓他執行。
但是存檔時預設都是存成.txt檔,你必須要手動變更副檔名為.bat
存好之後按兩下就可以執行了。
如果要編輯的話,該檔案上右鍵>編輯 即可
首先看到第一行:@echo off
要解釋第一行之前必須先探究echo是甚麼,我會和第二行一起說明。
第二行:echo Hello Meteor!
echo就是讓後面的內容可以顯示在螢幕上,echo和要顯示的內容中間記得加上空白鍵。
現在了解echo了,回來看第一行。為甚麼要加上@呢?
因為如果你不加@,電腦會認為你要輸出off這個詞。
而第一行的功用是甚麼?比較一下那張圖片中的兩個執行結果。
右邊是"沒有"用@echo off的。
如果你沒有用,你所繕打的任何程式碼都會顯示出來,而執行結果會被移動到下一行最左邊。
變成右邊那個執行結果。
因此,為了美觀我們都會加上@echo off在最一開始的地方。這只需要放一次即可。
如果程式尚在開發中則通常不會用,這樣可以方便debug。(因為可以看到哪個環節出錯)
至於第三行:pause
很簡單,就讓電腦出現"請按任意鍵繼續"的訊息。
不然電腦echo 完你的Hello Meteor之後就會直接關掉,看不到結果。
==============================================
接下來介紹註解吧。
這就是讓你在你的程式碼中加上註解,讓你可以快速回想起你這部分是在寫甚麼,而電腦執行時會自動跳過不會理會。
怎麼做?很簡單。
rem 你的註解
就這樣而已。你可以輸入任意字元。
==============================================
再來介紹如何變更執行時的視窗標題。
有沒有看到哪裡不一樣?
對,很簡單,只需要
title 你想要的標題
這樣就可以輕鬆變更了。
================================================
接下來我說說迴圈好了。
迴圈就是讓電腦一直重複執行某條程式碼,可以自己指定區間。
至於怎麼寫呢?
:top
rem 這裡就放你想要的程式碼
goto top
有沒有看出之間的關係?
goto哪裡你可以自行指定(不一定要top),但是在目的地的地方前面要加上一個冒號。
這樣就完成你的迴圈了。(其實還有for迴圈,這之後再介紹)
所以如果把echo Hello Meteor放在迴圈之中.....
:ohya
echo Hello Meteor!
goto ohya
就會不斷出現Hello Meteor,直到你關掉這個視窗。
(當然可以指定要迴圈幾次,這需要用到set,之後再介紹)
補充:因為:xxx是只有你指定goto時才會觸發
你可以想像goto xxx是起點而:xxx是終點,xxx必須一樣
換句話說,沒有任何起點,終點就沒有存在的意義(是這樣說嗎?)
電腦是先遇到goto才去尋找相對應的終點
因此,只單純遇到:xxx是會被忽略的
也因此,有人把:xxxxxxxx當成rem來使用,這也是可以的
====================================================
而在這篇的最後,來說說要怎麼讓電腦知道執行完成並退出吧
這更簡單,只需要
exit
結束。(其實還有其他功能,一樣之後再說)
只要遇到這句,便會一律退出,不管執行到哪個階段。
當然如果執行到最後電腦發現沒有指令後也會自動退出,看你自己囉
如果你跟我一樣懶你也可以不用加這一行
====================================================
呼,第一次po這種教學文,感覺自己說的好零碎(而且這真的是事實)
而且小劇場超級多www
米特的編輯器真的有夠爛,圖片一定要自己選檔案上傳不能直接複製貼上
用電腦截圖很麻煩欸==
(對我就是要嘴)
先到這裡啦。
今日教學:
echo
pause
title
rem
goto
今日進度總結範例:
@echo off
title Welcome msg
echo Welcome to Batch's world!
rem 歡迎來到Batch的世界
pause
goto 123
:456
PAUSE
exit
:123
rem 也可以透過goto來攔截exit
EcHo Have a nice day!
ReM Batch大小寫通用(除了某些之後會說的例外)喔
gOtO 456
之後內容會視情況增減,有些東西會需要更多的(ㄒㄧㄠˇ)文(ㄐㄩˋ)字(ㄔㄤˇ)來解釋,篇幅會更長
不懂也歡迎發問ww
Converter download here (My own Cloud):
https://dubox.com/s/1k96N2_s8hlpbj0BXCN3iSw
你可能有興趣的文章...
全部留言
終於有人懂我用米特編輯器的心聲了QQ 好文推推 不過因為之前有大佬建議 如果可以的話 可以用hackmd 編輯完之後 把連結放上來給大家看 這樣大家比較不會傷眼睛(?
真的有夠難用...... 至於Hackmd.....我找機會去研究一下怎麼弄 反正米特爛成這樣Hackmd不管怎樣一定都比較好 (我等等會不會被Ban
我真的不是啦 我很多東西也是自己去查資料還有寫code去debug才知道可以醬用 因為之前都只是單純用像是green judge那種題目網站練習而已 沒有太專注在理論的部分
的確,有時候還是要上網發問一下怎麼處理 雖然有時候其實是是自己的問題😂 比如老花眼(?)少打一個空白鍵之類
It's at another level
You can post more article about phone. Cheers!
以前用 echo 語法寫個 .bat,把捷徑改成瀏覽器圖案,直接讓別人電腦當機 XD 看到這篇讓我想到第一次寫的「病毒」
我也用batch生過幾個病毒,然後用學校電腦測試 然後就是因為這樣我開始討厭還原軟體,不重啟電腦看不到完整效果啊啊啊
還有run出來之後cmd沒關掉 然後又去run下一次的code
我反而是常常跑完之後發現bug,然後改好之後忘記存檔就一直卡關想說怎麼還有問題RRR 我老了,我真的老了🥺🥺 腦袋都不管用了😂
匿名
我總覺得你搞錯了什麼 Batch不是一個程式語言 你在寫的檔案叫做batch file 讓你「批次」執行command的一個file 你寫的內容就是命令提示字元裡面的command
windows的batch和linux的bash很類似,這兩種通常不會拿來寫大型的程式,但是拿來作為系統管理很好用,可以跑自動化、排程等等
「但是嚴格來說說你要說他是一堆指令也不能說錯」 其實他也就只是一堆指令 cmd 是一種 shell 而 batch 就是一種 shell script 不過已經被微軟爸爸拋棄了
阿這個powershell感覺和cmd差有點多....曾經有稍微研究過但是沒有到很透徹
語法毒瘤、效率低下、字串處理麻煩、要添加自訂義的指令很麻煩(要設環境變數有的沒的)⋯⋯我自己是覺得不好用啦。外加現在 windows 的開發者幾乎最常用的 terminal 是 windows terminal,可以直接使用 powershell 或是 wsl。 很難過得講,這是個不推薦大家學的東西,雖然這是我第一次學寫程式的契機。
如果真的只是單純用記事本弄一弄存成.bat確實沒有甚麼搞頭 但是如果是用好用的converter轉成.exe就是另一個世界了 你可以內嵌檔案,然後做很多其他的事情,比如說寫一個病毒(小聲)又或者電腦課時用來作弊用的程式(小小聲) 又或者可以弄一個解毒的程式(其實這只要.bat就可以搞定了啦) 又或者寫個小遊戲 只是某部分來說真的有點麻煩。比如解壓縮,我之前為了這個還去研究7z.exe的語法,然後把我要的所有東西嵌在一起弄成一個.exe。但是前幾天我才發現這還有額外的語法可以用,這個converter內建解壓縮的語法(對,這跟cmd無關所以我用"語法"而不是"指令") 還有太多額外的功能了。這樣就讓batch有更多的用武之地。 單純.bat真的沒有用,但是有額外的工具,就會玩出其他可能。
所謂轉成 .exe 本質上是完全等價的,所以你說是另一個世界我不以為然。甚至那種所謂 converter 的原理就是在外面加一個殼,運行時候再去呼叫 cmd 執行寫在他可執行檔某一資料段上面的 script。 你說的所謂第三方,對於所有的 shell script 都適用,因為他們本質上就是一直去呼叫其他的東西,我是很不看好 cmd 這種東西啦。 你舉了一個例子 7z.exe,但 7z.exe 可能是別人用 c++ 寫的東西,終究 bat 只能去 call 別人寫的東西,然後 batch 本身又超慢。 我覺得如果你喜歡 script 類的不如去學 python,雖然性質差異不小(但那是 cmd 的鍋)。