[爆卦]bat變數計算是什麼?優點缺點精華區懶人包

為什麼這篇bat變數計算鄉民發文收入到精華區:因為在bat變數計算這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者VElysian (家瑀 致中和)看板EzHotKey標題[AHK-] AutoHotKey 入...



變數與剪貼簿:


Using variables and the clipboard

http://www.autohotkey.com/docs/Tutorial.htm#Variables



變數(Variable):


變數(Variable)就是可以放入一段文字的空箱子(其實是一小段記憶體空間)。

雖然變數可以儲存任意的字母、字串,
不過當一個變數只包含數字(當然可以包括小數點),並且拿來做運算或比較大小時,
它會被自動轉換成真的可以運算的數字,再做運算。

相反地,如果你將運算結果儲存回變數裡面的話,
它會被轉成字串然後才放進變數裡面。



除了函式裡面的變數屬於區域變數(local variable)
其他的變數都是 全域變數(global variable)
也就是說,一段 script 裡面所有的指令都可以讀取或儲存全域變數

關於 函式 http://www.autohotkey.com/docs/Functions.htm#Locals


變數出生的時候不需宣告,當你寫下變數的名字,它們就已經存在了唷~~
如果沒有特別指定,變數出生時箱子裡面是空空的沒有任何東西。



下面的範例將示範如何指定一段文字給一個變數:

MyVar1 = 123
MyVar2 = 我是可愛的文字



下面的例子則是一個變數的與其他字串(數字)比較:

MyVar1 = 123
MyVar2 = 我是可愛的文字

if MyVar2 = 我是可愛的文字
{
  MsgBox MyVar2 的內容是 "我是可愛的文字".
}
if MyVar1 >= 100
{
  MsgBox MyVar1 的內容是 %MyVar1%, 這個值大於或等於 100.
}

在最後一個 MsgBox 後面,或許有人已經注意到 MyVar1 兩邊多了 % 這個符號
(沒注意到的話請洽眼科醫生)。
%MyVar1%(兩邊有 % )出現的地方,表示會將 MyVar1 的資料提取出來,
再依照所下的指令進行顯示、運算等等。這裡則是直接將內容值顯示出來。


這種使用技巧還可以運用在將變數內容的拷貝或移轉給另一個變數,範例如下:

MyVar1 = 123
MyVar2 = 我是可愛的文字
MyVarConcatenated = %MyVar1% %MyVar2%
MsgBox %MyVarConcatenated%

在第三行右邊,會先將等號右邊的東西連結起來再丟進 MyVarConcatenated 變數中。
等號右邊分成三部份:

第一部份:%MyVar1% 也就是 123
第二部份:一個空格 也就是 空白鍵按一下。 ^_^|||
第三部份:%MyVar2% 也就是 我是可愛的文字

所以最後 MyVarConcatenated 的內容就是“123 我是可愛的文字
^這裡有一個空格唷~~



這個範例會進行兩個變數的比較:

ItemCount = 2
ItemLimit = 1

if (ItemCount > ItemLimit)
{
MsgBox ItemCount 裡面的數值是 %ItemCount%, 比 %ItemLimit% 還大.
}


注意:

if 後面有小括號,表示這個 if 指令包含一個表達式(expression)
少了這對小括號,則稱為沒有表達式的 if-指令(non-expression if-statement)

少了小括號,右邊的變數(這裡是 ItemLimit)旁邊一定要加上 % 符號,
而且只能有一個比較運算子( >, <, >=, <= 等等)
也就是說,不能使用 "AND"、"OR" 這類運算子。




( Var1 >= 60 AND Var1 <= 100 )

就一定要在左右加上小括號。


以這個例子來說,一定要寫成下面其中一種,才能正確執行:

if ItemCount > %ItemLimit%
if ( ItemCount > ItemLimit )




數學運算:


要將計算結果丟進變數箱子裡面,必須使用 :=(冒號-等號)這個運算子。
範例如下:

Price = 100
Discount = 0.2
NetPrice := Price * (1 - Discount/100)

表達式(expression)那邊有完整的數學運算子介紹。
http://www.autohotkey.com/docs/Variables.htm#Expressions



剪貼簿:


Clipboard 是一個特別的變數,因為它裡面裝的是 Windows 剪貼簿目前儲存的文字。
而且你可以像使用一般變數一樣任意使用它唷~~

下面這個範例會將剪貼簿的文字顯示出來:

MsgBox %clipboard%


下面的例子會改變剪貼簿的內容(替換文字):

clipboard = 這是第一行文字.`r`n這是第二行文字.`r`n


`r 表示回到那一行的最前面。
`n 表示新增一行。
兩個寫在一起,就好像在記事本裡面按 [Enter] 換行一樣。


要將剪貼簿的文字增加(或者放到其他變數裡面),可以類似像這樣寫:

clipboard = %clipboard% 好妙! 變長了耶~~



更深入的討論可以參考:
Clipboard、ClipboardAll、還有 OnClipboardChange
(Clipboard, ClipboardAll, and OnClipboardChange)
http://www.autohotkey.com/docs/misc/Clipboard.htm

變數和表達式(Variables and Expressions)
http://www.autohotkey.com/docs/Variables.htm


--

主動是機會的誘餌


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.93.10
※ 編輯: VElysian 來自: 61.62.73.116 (07/22 01:33)
CHCOOBOO:推教學 07/22 08:24
kslman:我的頭好暈,我需要暈程式碼藥 07/22 09:48
VElysian:嗯,看來寫得不夠清楚,歡迎發問唷~~ ^__^ 07/22 10:09
VElysian:這樣才方便調製新藥,可以對症下藥。 ^^ 07/22 10:10
kslman:哈哈,是因為我是程式碼門外漢嘛 07/22 23:38
kslman:只玩過Dos時代的bat檔,而且是很簡單的指令 07/22 23:39
VElysian:軟體裡面的說明文件: Variables and Expressions 07/23 18:36
VElysian:那邊有說明,可以先看看。 改日有空會再補充。 ^_^ 07/23 18:37
※ 編輯: VElysian 來自: 61.62.150.174 (07/27 21:28)
※ 編輯: VElysian 來自: 61.62.72.58 (08/01 19:18)

你可能也想看看

搜尋相關網站