#教學 很簡單的程式語言-Batch (1)
程式設計板 2021年8月25日 06:22

看到越來越多的教學文,感覺這一版終於要開始活絡了呢 既然如此不貢獻一下感覺對不起自己(? 好,相信絕大多數的人都沒有聽過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


  回文

你可能有興趣的文章...

全部留言

B1 (原 Po)   2021.08.25 06:23

我覺得等等會把傳說大佬釣出來😆

我覺得等等會把傳說大佬釣出來😆
0
B2 2021.08.25 06:27

終於有人懂我用米特編輯器的心聲了QQ 好文推推 不過因為之前有大佬建議 如果可以的話 可以用hackmd 編輯完之後 把連結放上來給大家看 這樣大家比較不會傷眼睛(?

收合內層留言icon 展開1則留言
終於有人懂我用米特編輯器的心聲了QQ 好文推推 不過因為之前有大佬建議 如果可以的話 可以用hackmd 編輯完之後 把連結放上來給大家看 這樣大家比較不會傷眼睛(?
1
B2-1 (原 Po)   2021.08.25 06:27

真的有夠難用...... 至於Hackmd.....我找機會去研究一下怎麼弄 反正米特爛成這樣Hackmd不管怎樣一定都比較好 (我等等會不會被Ban

真的有夠難用...... 至於Hackmd.....我找機會去研究一下怎麼弄 反正米特爛成這樣Hackmd不管怎樣一定都比較好 (我等等會不會被Ban
0
B3 2021.08.25 06:28

B1我不是大佬 你可以自動忽略我(?

收合內層留言icon 展開1則留言
B1我不是大佬 你可以自動忽略我(?
0
B3-1 (原 Po)   2021.08.25 06:28

😂😂你也是啦不要謙虛 有時候謙虛不是美德😂😂😂😂

😂😂你也是啦不要謙虛 有時候謙虛不是美德😂😂😂😂
0
B4 2021.08.25 06:42

我真的不是啦 我很多東西也是自己去查資料還有寫code去debug才知道可以醬用 因為之前都只是單純用像是green judge那種題目網站練習而已 沒有太專注在理論的部分

收合內層留言icon 展開1則留言
我真的不是啦 我很多東西也是自己去查資料還有寫code去debug才知道可以醬用 因為之前都只是單純用像是green judge那種題目網站練習而已 沒有太專注在理論的部分
0
B4-1 (原 Po)   2021.08.25 06:42

的確,有時候還是要上網發問一下怎麼處理 雖然有時候其實是是自己的問題😂 比如老花眼(?)少打一個空白鍵之類

的確,有時候還是要上網發問一下怎麼處理 雖然有時候其實是是自己的問題😂 比如老花眼(?)少打一個空白鍵之類
0
B5 2021.08.25 06:43

It's at another level

收合內層留言icon 展開1則留言
It's at another level
0
B5-1 (原 Po)   2021.08.25 06:43

You can post more article about phone. Cheers!

You can post more article about phone. Cheers!
0
B6 2021.08.25 09:05

以前用 echo 語法寫個 .bat,把捷徑改成瀏覽器圖案,直接讓別人電腦當機 XD 看到這篇讓我想到第一次寫的「病毒」

收合內層留言icon 展開1則留言
以前用 echo 語法寫個 .bat,把捷徑改成瀏覽器圖案,直接讓別人電腦當機 XD 看到這篇讓我想到第一次寫的「病毒」
0
B6-1 (原 Po)   2021.08.25 09:05

我也用batch生過幾個病毒,然後用學校電腦測試 然後就是因為這樣我開始討厭還原軟體,不重啟電腦看不到完整效果啊啊啊

我也用batch生過幾個病毒,然後用學校電腦測試 然後就是因為這樣我開始討厭還原軟體,不重啟電腦看不到完整效果啊啊啊
0
B7 2021.08.25 12:01

還有run出來之後cmd沒關掉 然後又去run下一次的code

收合內層留言icon 展開1則留言
還有run出來之後cmd沒關掉 然後又去run下一次的code
0
B7-1 (原 Po)   2021.08.25 12:01

我反而是常常跑完之後發現bug,然後改好之後忘記存檔就一直卡關想說怎麼還有問題RRR 我老了,我真的老了🥺🥺 腦袋都不管用了😂

我反而是常常跑完之後發現bug,然後改好之後忘記存檔就一直卡關想說怎麼還有問題RRR 我老了,我真的老了🥺🥺 腦袋都不管用了😂
0

匿名

B8 2021.08.25 18:13

我總覺得你搞錯了什麼 Batch不是一個程式語言 你在寫的檔案叫做batch file 讓你「批次」執行command的一個file 你寫的內容就是命令提示字元裡面的command

收合內層留言icon 展開1則留言
我總覺得你搞錯了什麼 Batch不是一個程式語言 你在寫的檔案叫做batch file 讓你「批次」執行command的一個file 你寫的內容就是命令提示字元裡面的command
0
B8-1 (原 Po)   2021.08.25 18:13

對,所以我文中有說"但是嚴格來說說你要說他是一堆指令也不能說錯"

對,所以我文中有說"但是嚴格來說說你要說他是一堆指令也不能說錯"
0
B9 2021.08.26 08:05

windows的batch和linux的bash很類似,這兩種通常不會拿來寫大型的程式,但是拿來作為系統管理很好用,可以跑自動化、排程等等

收合內層留言icon 展開1則留言
windows的batch和linux的bash很類似,這兩種通常不會拿來寫大型的程式,但是拿來作為系統管理很好用,可以跑自動化、排程等等
0
B9-1 (原 Po)   2021.08.26 08:05

但是確實可以做一些其他的事情😉 到時候我會再多說,這樣比較好懂

但是確實可以做一些其他的事情😉 到時候我會再多說,這樣比較好懂
0
B10 2021.08.28 14:03

「但是嚴格來說說你要說他是一堆指令也不能說錯」 其實他也就只是一堆指令 cmd 是一種 shell 而 batch 就是一種 shell script 不過已經被微軟爸爸拋棄了

收合內層留言icon 展開1則留言
「但是嚴格來說說你要說他是一堆指令也不能說錯」 其實他也就只是一堆指令 cmd 是一種 shell 而 batch 就是一種 shell script 不過已經被微軟爸爸拋棄了
0
B10-1 (原 Po)   2021.08.28 14:03

阿這個powershell感覺和cmd差有點多....曾經有稍微研究過但是沒有到很透徹

阿這個powershell感覺和cmd差有點多....曾經有稍微研究過但是沒有到很透徹
0
B11 2021.08.28 14:07

語法毒瘤、效率低下、字串處理麻煩、要添加自訂義的指令很麻煩(要設環境變數有的沒的)⋯⋯我自己是覺得不好用啦。外加現在 windows 的開發者幾乎最常用的 terminal 是 windows terminal,可以直接使用 powershell 或是 wsl。 很難過得講,這是個不推薦大家學的東西,雖然這是我第一次學寫程式的契機。

收合內層留言icon 展開1則留言
語法毒瘤、效率低下、字串處理麻煩、要添加自訂義的指令很麻煩(要設環境變數有的沒的)⋯⋯我自己是覺得不好用啦。外加現在 windows 的開發者幾乎最常用的 terminal 是 windows terminal,可以直接使用 powershell 或是 wsl。 很難過得講,這是個不推薦大家學的東西,雖然這是我第一次學寫程式的契機。
1
B11-1 (原 Po)   2021.08.28 14:07

如果真的只是單純用記事本弄一弄存成.bat確實沒有甚麼搞頭 但是如果是用好用的converter轉成.exe就是另一個世界了 你可以內嵌檔案,然後做很多其他的事情,比如說寫一個病毒(小聲)又或者電腦課時用來作弊用的程式(小小聲) 又或者可以弄一個解毒的程式(其實這只要.bat就可以搞定了啦) 又或者寫個小遊戲 只是某部分來說真的有點麻煩。比如解壓縮,我之前為了這個還去研究7z.exe的語法,然後把我要的所有東西嵌在一起弄成一個.exe。但是前幾天我才發現這還有額外的語法可以用,這個converter內建解壓縮的語法(對,這跟cmd無關所以我用"語法"而不是"指令") 還有太多額外的功能了。這樣就讓batch有更多的用武之地。 單純.bat真的沒有用,但是有額外的工具,就會玩出其他可能。

如果真的只是單純用記事本弄一弄存成.bat確實沒有甚麼搞頭 但是如果是用好用的converter轉成.exe就是另一個世界了 你可以內嵌檔案,然後做很多其他的事情,比如說寫一個病毒(小聲)又或者電腦課時用來作弊用的程式(小小聲) 又或者可以弄一個解毒的程式(其實這只要.bat就可以搞定了啦) 又或者寫個小遊戲 只是某部分來說真的有點麻煩。比如解壓縮,我之前為了這個還去研究7z.exe的語法,然後把我要的所有東西嵌在一起弄成一個.exe。但是前幾天我才發現這還有額外的語法可以用,這個converter內建解壓縮的語法(對,這跟cmd無關所以我用"語法"而不是"指令") 還有太多額外的功能了。這樣就讓batch有更多的用武之地。 單純.bat真的沒有用,但是有額外的工具,就會玩出其他可能。
0
B12 2021.08.29 01:00

所謂轉成 .exe 本質上是完全等價的,所以你說是另一個世界我不以為然。甚至那種所謂 converter 的原理就是在外面加一個殼,運行時候再去呼叫 cmd 執行寫在他可執行檔某一資料段上面的 script。 你說的所謂第三方,對於所有的 shell script 都適用,因為他們本質上就是一直去呼叫其他的東西,我是很不看好 cmd 這種東西啦。 你舉了一個例子 7z.exe,但 7z.exe 可能是別人用 c++ 寫的東西,終究 bat 只能去 call 別人寫的東西,然後 batch 本身又超慢。 我覺得如果你喜歡 script 類的不如去學 python,雖然性質差異不小(但那是 cmd 的鍋)。

所謂轉成 .exe 本質上是完全等價的,所以你說是另一個世界我不以為然。甚至那種所謂 converter 的原理就是在外面加一個殼,運行時候再去呼叫 cmd 執行寫在他可執行檔某一資料段上面的 script。 你說的所謂第三方,對於所有的 shell script 都適用,因為他們本質上就是一直去呼叫其他的東西,我是很不看好 cmd 這種東西啦。 你舉了一個例子 7z.exe,但 7z.exe 可能是別人用 c++ 寫的東西,終究 bat 只能去 call 別人寫的東西,然後 batch 本身又超慢。 我覺得如果你喜歡 script 類的不如去學 python,雖然性質差異不小(但那是 cmd 的鍋)。
1


登入後發表留言






確定要刪除此文章?
#教學 很簡單的程式語言-Batch (1)

看到越來越多的教學文,感覺這一版終於要開始活絡了呢 既然如此不貢獻一下感覺對不起自己(? 好,相

檢舉文章
檢舉原po回覆B0留言
請選擇刪除文章原因
請選擇刪除留言原因
您即將進入之文章內容需滿十八歲方可瀏覽

根據「電腦網路內容分級處理辦法」修正條文第六條第三款規定,已於網站首頁或各該限制級網頁,依台灣網站分級推廣基金會規定作標示。若您尚未年滿十八歲,麻煩點選離開。若您已滿十八歲,一樣不可將本區之內容派發、傳閱、出售、出租、交給或借予年齡未滿18歲的人士瀏覽閱讀,或將本網站內容向該人士出示、播放或放映。

離開
問題讀取中...稍待60秒...