在 Windows 命令提示字元(CMD)中,處理變數主要分為設定與讀取兩個部分。
設定變數最常用的指令是 set。語法為 set 變數名稱=變數值。需要特別注意的是,等號兩邊不可以有空格,否則空格會被視為名稱或數值的一部分。例如輸入 set myname=Alice 就會建立一個名為 myname 的變數。
要讀取或使用已經設定好的變數,必須在變數名稱的前後各加上一個百分比符號。例如要顯示剛才設定的變數,請輸入 echo %myname%。這會讓系統將百分比包圍的字串替換成實際存儲的內容。
如果你希望變數是由使用者輸入的,可以使用 set /p 參數。這會暫停程式執行並等待使用者輸入。例如 set /p userinput=請輸入名稱:。
如果你需要進行數值運算,則必須加上 /a 參數。CMD 預設將變數視為字串,只有加上 /a 才會進行數學計算。例如 set /a result=10+5,之後 echo %result% 就會得到 15。
最後要提醒,在 CMD 視窗直接設定的變數只在該視窗有效。一旦關閉視窗,變數就會消失。如果你需要在所有視窗或重開機後依然有效,則需要使用 setx 指令將其存入系統環境變數中。
在 PowerShell 中,變數的處理方式與傳統 CMD 有很大的不同,最直觀的差異是所有變數都必須以 $ 符號開頭。
設定變數非常簡單,直接使用 $變數名稱 = “數值” 即可。例如輸入 $name = “Alice”,這就完成了變數的宣告與賦值。讀取變數時,同樣直接輸入 $name 或是使用 Write-Host $name 就能顯示內容。PowerShell 不像 CMD 需要在變數前後加上百分比符號,它會自動識別 $ 開頭的字串為變數。
如果要讓使用者輸入內容並存入變數,PowerShell 使用的是 Read-Host 指令。語法為 $userinput = Read-Host “請輸入名稱”。這會顯示提示文字並等待輸入。
處理數值運算時,PowerShell 比 CMD 聰明許多,它會自動判斷資料類型。你不需要額外的參數就可以直接進行運算,例如 $sum = 10 + 5。如果你想明確指定變數類型,可以在變數名稱前加上中括號,像是 [int]$age = 25,這樣可以確保該變數只能儲存整數。
另外一個重要的特性是環境變數的存取。在 PowerShell 中,如果你要存取系統環境變數(例如路徑),必須使用 $env: 作為前置詞。例如輸入 $env:UserName 可以直接取得目前登入的使用者名稱,或是輸入 $env:Path 查看系統路徑設定。
如何在 PowerShell 中使用陣列(Array)或是物件(Object)來存儲多筆資料
在 PowerShell 中,如果你需要處理多筆資料,最簡單的方式是使用陣列。陣列可以同時儲存多個字串或數字。
建立陣列只需要用逗號隔開各個值即可,例如 $list = “Apple”, “Banana”, “Cherry”。讀取陣列時,PowerShell 使用從 0 開始的索引號碼,放在中括號內。如果你輸入 $list[0],畫面會顯示 Apple;輸入 $list[1] 則會顯示 Banana。
如果你想要建立一個包含多種屬性的資料(類似小型的資料庫),可以使用物件。最常用的方法是建立一個 [PSCustomObject]。例如:
$person = [PSCustomObject]@{
Name = “Alice”
Age = 25
City = “Taipei”
}
建立之後,你可以用點號(.)來讀取特定的屬性。例如輸入 $person.Name 會得到 Alice,輸入 $person.Age 則會得到 25。這種方式讓資料結構變得非常清晰,也非常適合處理較複雜的自動化腳本。
如果你有一組陣列物件,還可以使用管道符號(|)搭配 foreach 語法來批次處理資料。例如 $list | ForEach-Object { Write-Host “項目名稱是:$” },這裡的 $ 代表目前正在處理的那一個項目。
在 PowerShell 中,顯示(列印)變數值有多種方式,最直覺的方法是直接輸入變數名稱。
如果你在主控台中輸入 $name 並按下 Enter,PowerShell 會自動呼叫預設的輸出機制顯示內容。這在互動式操作時最方便。
在撰寫腳本時,最常用的指令是 Write-Host。這主要用於在螢幕上顯示文字,並且可以自訂顏色。例如 Write-Host $name -ForegroundColor Yellow 會以黃色字體印出變數內容。要注意的是,Write-Host 的目的是「給人看」,它的輸出無法透過管道符號(|)傳遞給下一個指令。
另一種專業的做法是使用 Write-Output。這是 PowerShell 的標準輸出方式,它會將變數內容送到輸出流中。雖然在畫面上看起來與直接輸入變數名相同,但它的優點是能讓其他指令接續處理這些資料。
如果你想將變數嵌入到一段字串中一起印出來,只要使用雙引號即可。例如 “$name 的年齡是 $age”。PowerShell 會自動辨識雙引號內的 $ 符號並將其替換為實際數值。若使用單引號,則會原樣印出字串,不會解析變數。
對於結構較複雜的物件或陣列,你可以使用 Format-Table 或 Format-List 指令。這能讓多個變數屬性以表格或清單的方式整齊排列,方便閱讀大量資訊。