
這麼龐大的一串要怎麼開始也是一個大問題,先從簡單的開始好了:

嗯,它就是設定一個變數嘛!但要注意一下:變數在命令提示字元是用二個百分比夾在一起的,這在之前已經說過了;另外變數的取代是在執行那一瞬間變成變數的值,如範例中是到執行時才把「%var%」變成「5」;最後也要注意等於二邊是沒有空白的。

字串的部份請用「"」括起來,說明裡面是沒有說啦,但做一下會比較好。

「/p」的意義就是請使用者自行輸入變數,當然在這裡拿來做例子很奇怪,但在批次檔就不一樣了,它變的很好用。另外「/a」:

呃,其實要很坦白的說,沒用過。在說明裡面有提到其它運算子,會用到的時候再查就好了。
來個久違的分隔線,因為接下來要進入另一個領域。命令提示字元為了使用者方便,一開始設定了很多環境變數,顯示方法如下:

這些列出來的有一大半下一章再說,而若要只顯示某個字母開頭的話:

先來看幾個比較重要的:

第一個就先看不重要的,呃,好啦,它是代表本身的作業系統,為何是「Windows NT」呢?因為 Windows NT 是 Windows® 7 血統的始祖,所以含 Windows® XP 其實也都可以叫 Windows® NT。講古結束,下一個:

這個指令會有個問題,他顯示的不是這台電腦的中央處理器架構,而是目前執行的 cmd.exe 的架構。也就是說,如果在 64 位元的作業系統中執行 32 位元的 cmd.exe,他會出現「x86」。要正確的顯示正確架構,要用登錄檔,這裡有解法。

這個就回到說明了,不在 set 清單裡面。這個就是顯示目前執行的路徑,會用到的時候要注意。

這個就是顯示目前的日期,就不用再使用 date 指令了。這個指令也受日期格式而有所不同,這也需要注意。如果需要完整頡取時間,請用這個指令。

這個就是顯示目前的時間,就不用再使用 time 指令了。這個指令也受時間格式而有所不同,這也需要注意。如果需要完整頡取時間,請用這個指令。

就是取一個 0 到 32767 的變數啦,如要指定範圍,就要用到「/a」,如「set /a var=%random%%100」。

「%errorlevel%」是來看上個指令有沒有執行成功,成功會是回傳「0」,失敗則是其他值。一個完整的程式會一直不斷看「%errorlevel%」有沒有異常,不過那真得很累就是了。
補充一下,若要變成全域變數可以使用「setlocal」:

他正規是配合「endlocal」一起使用,但連設定成全域變數都很少在用了,有需要的人可以去 ss64.com 看。
說明裡面有提到展開變數的部份,在後面會開一章提。「set」要用到的清一色都是基本的東西,但很多時候要寫複雜的東西還是可能會用到下面的部份,所以還是要知道比較好。下一章說好要來解釋其它變數了,要來解釋整個 Windows® 基本目錄架構。
下一章:目錄變數
- 2012-09-11 初次發佈。
- 2017-07-12 更新成 Windows 10 的版本。
請問版主
回覆刪除在設定變數的那個區塊
數字有range嗎?
還是打多少就多少?
在網路上沒有人在討論這個問題耶
刪除大部份的情況下 set 會把輸入的東西視為字串
不會把他看成數字
就只有在下運算的指令才會
所以如果要輸入極限的話應該是它可以輸入字串的極限
不過實際在寫批次檔時這個問題不大
這點可以放心
那有可能變這樣嗎?
刪除EX:str1=aaaa str2=bbbb
var=str1+str2
然後輸出跑出var=aaaabbbb
set str1=aaaa
刪除set str2=bbbb
set var=%str1%%str2%
看得出來有學過其他語言的基礎
命令提示字元或 Bash 絕對比想像的還簡單很多
只是手法沒有像其他語言嚴謹而己
謝謝版主QAQ
刪除