Menu

Wednesday, June 12, 2013

[Batch Script] วิธีเปลี่ยนค่าตัวแปรในลูป FOR
[Batch Script] How to Change Variable in FOR Loop

เนื่องจากลูป FOR ถูก interpret ตัวแปรในลูป FOR จึงไม่สามารถเปลี่ยนค่าและใช้ค่าที่ถูกเปลี่ยนในลูปเดียวกันได้
Due to FOR loop is interpreted, we cannot change a variable within a FOR loop and use that changed variable in the same loop

เราจึงต้องใช้ Delayed variable expansion ดังนั้นใส่คำสั่งนี้ก่อนลูป FOR
Delayed variable expansion is needed so add this command before FOR loop 
setlocal enabledelayedexpansion

แล้วใส่คำสั่งนี้ใต้ลูป FOR
Then add this command below FOR loop
endlocal 

ตัวแปรที่ต้องดีเลย์ส่วนขยาย ให้ใช้เครื่องหมายตกใจ (!) แทนเครื่องหมายเปอร์เซ็นต์ (%)
The variable whose expansion should be delayed should be surrounded by exclamation marks (!) instead of percent signs (%)

สำหรับตัวอย่าง
For example,
  1. @echo off
  2. set /a num=1
  3. setlocal enabledelayedexpansion
  4. for /L %%F in (1, 1, 100) do (
  5.      set /a num=%%F
  6.      echo !num!
  7. )
  8. endlocal
  9. pause

No comments:

Post a Comment