很多人會問批次檔要寫什麼,這裡也不好拿出一個相樣的例子,所以就抱歉不舉例了。
在這一章要說一些撰寫批次檔會遇到的問題。首先,先說批次檔常用的跳行執行:

實際上是這樣用的:

這就是「goto」的功用,直接跳到「:」開頭的地方。「goto」在需要編譯的程式是大忌,但在直譯的命令提示字元就很受歡迎,因為命令提示字元是一次解析一行,沒有程式會亂掉的問題。
批次檔也是可以傳遞參數,範例如下:

可以看出來參數被傳遞了,「%0」代表批次檔執行的名稱、「%1」代表第一個參數、「%2」代表第二個參數。
來回顧一下在「set」跳過的東西:

很多人己經看出問題所在了,照理要顥示「2」,但可以看到結果它會先把括弧裡面的東西全部展開。解決辦法有二種,第一種是上面介紹的「goto」,在括弧裡面直接使用「goto」,強迫跳出副程式。但這是在比較簡單的程式才好用,否則到最後變數會變成什麼也不知道。程式碼更改如下:

第二種是用延遲環境變數展開功能,程式碼更改如下:

直到使用時才會展開;第一行「setlocal EnableDelayedExpansion」是去查 ss64.com 才知道要開。其實一開始個人在撰寫時對這個問題困擾很久,直到做這個教學才知道可以這樣用。
後面來說如何使批次檔更美觀,首先:

「echo on」是預設狀態,就是會顥示每一行執行的指令,若要不顥示,可以用「echo off」:

可是這還有第一行「echo off」啊!所以有一個東西叫「@」,就是不顥示那一行,使用如下:

最後來說二個批次檔也會用到的指令:

它就是用「pushd」存入執行前目錄(範例是 C:\Users\%username%),並切換到「C:\」,當需要時再用「popd」切換回去(範例是 C:\Users\%username%)。

這二個指令是用堆疊的方式,即最後進去的會最先出來。
這章的深度很淺,但不知道有這些方法時在寫批次檔會不知所措,甚至初學者連錯在哪裡都不知道。批次檔很實用,學完之後可以試著來套用在一些比較簡單的使用上;一開始都會有很多問題,可以試著發問,寫多自然就沒有問題了。
下一章:淺入淺出
- 2012-09-11 初次發佈。
- 2017-07-12 更新成 Windows 10 的版本。
請問版主goto goto next
回覆刪除echo A.
:next
echo B.<<此段的意思
這個的意思是要說明如果下了 goto
刪除他會略過中間任何程式碼
直接到標籤的位置執行
版主您好,想請教在延遲環境變數展開功能那的例子
回覆刪除setlocal EnableDelayedExpansion
set a=1
(
set a=2
echo %!a!%
)
此處的 echo %!a!% ,是否應該為 !a! ?
還想詢問 !! 的使用與方法?
是 !a! 才對喔
刪除其實可以 %!a!% 和 !a! 都試看看
在 .cmd 檔的最後面加 pause 就可以暫停結果
這招會了還可以偵錯
OK! 感恩!
刪除謝版主的教學文章,奠定了我的程式基礎,真要說的話,你也算是我的老師,是否有臉書或者LINE可加
回覆刪除以下是我的小成果<(_ _)>
https://www.youtube.com/channel/UClOuD6S_0OSY5RH-fACpivg
我沒有 LINE 所以也不知道要怎麼加
刪除其實你寫的程式己經我教學的深很多了
可以的話開始去摸一些大型的程式語言
或是轉戰 Linux 也是個不錯的
PowerShell 嗎?有興趣再去摸吧
微軟推的不是很順利
也沒臉書嗎,有的,我另外有學C C++ Java html vbscript,大多都有用batch的概念去學,像我C兩個禮拜就學完,其實我自己也很驚訝,powershell想等摸bash時順便去碰
刪除被你猜對了,我也沒有臉書
刪除VB 可以放生了,微軟也準備要放生了
看你好像是要走網頁那塊
那可以去玩看看 ASP.NET (MVC / Core)
那個在台灣的就業市場很吃香
最後讓我小警告一下,即便是最基礎的 C 都比命令提示字元複雜很多
更別提 C++ / Java 等這種大型的程式語言
不要太小看他喔
到是在學完命令提示字元後就會默默的發現
很多在 C / C++ / Java 要寫很多行的,在命令提示字元寫一行就好了
然後就會默默的看著別人還在硬幹臉上的汗珠
想要在 Linux 「做事」的
沒有 Bash 根本什麼事都做不了
如果有興趣的話可以去摸看看
但台灣的市場不是很多人用就是了,至少是現在
作者已經移除這則留言。
刪除現在臉書什麼動作都要登入
刪除想匿名都不行...
弄個假名帳號唄
刪除這種事我也試過了
刪除他要電話,而且用手機開帳號還要你拍照拍臉給他們看
其實我是有其他的方式在處理即時通訊的問題啦
但現在在測試中,等之後比較穩定再拿出來獻醜吧
等你了老師,有問題再跟我說吧,別忘記我喔
刪除你好
刪除現在的 Google 不論是 Google+ 或 YouTube 都找不到你的連絡方式
可不可以提供一個方式找你?
作者已經移除這則留言。
刪除噢對了,最近一部的影片是在前幾天所發佈的,批次檔防毒,有興趣的話可以看看順便幫我推廣XD
刪除https://youtu.be/x0ukbete7nY
這種事我也試過了
回覆刪除他要電話,而且用手機開帳號還要你拍照拍臉給他們看
其實我是有其他的方式在處理即時通訊的問題啦
但現在在測試中,等之後比較穩定再拿出來獻醜吧