Batch Script - ตัวแปร

มีตัวแปรสองประเภทในไฟล์แบตช์ หนึ่งคือสำหรับพารามิเตอร์ที่สามารถส่งผ่านได้เมื่อไฟล์แบตช์ถูกเรียกและอีกไฟล์หนึ่งทำผ่านคำสั่ง set

อาร์กิวเมนต์บรรทัดคำสั่ง

สคริปต์แบตช์สนับสนุนแนวคิดของอาร์กิวเมนต์บรรทัดคำสั่งซึ่งอาร์กิวเมนต์สามารถส่งผ่านไปยังไฟล์แบตช์เมื่อเรียกใช้ อาร์กิวเมนต์สามารถเรียกได้จากไฟล์แบตช์ผ่านตัวแปร% 1,% 2,% 3 และอื่น ๆ

ตัวอย่างต่อไปนี้แสดงไฟล์แบตช์ซึ่งยอมรับอาร์กิวเมนต์บรรทัดคำสั่ง 3 รายการและสะท้อนไปยังหน้าจอบรรทัดคำสั่ง

@echo off 
echo %1 
echo %2 
echo %3

หากชุดสคริปต์ข้างต้นถูกเก็บไว้ในไฟล์ที่เรียกว่า test.bat และเราต้องเรียกใช้แบตช์เป็น

Test.bat 1 2 3

ต่อไปนี้เป็นภาพหน้าจอของลักษณะนี้ในพรอมต์คำสั่งเมื่อไฟล์แบตช์ถูกเรียกใช้งาน

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

1 
2 
3

หากเราเรียกใช้ชุดงานเป็น

Example 1 2 3 4

ผลลัพธ์จะยังคงเหมือนเดิม อย่างไรก็ตามพารามิเตอร์ที่สี่จะถูกละเว้น

ตั้งค่าคำสั่ง

อีกวิธีหนึ่งในการเริ่มต้นตัวแปรคือผ่านคำสั่ง 'set' ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง set

ไวยากรณ์

set /A variable-name=value

ที่ไหน

  • variable-name คือชื่อของตัวแปรที่คุณต้องการตั้งค่า

  • value คือค่าที่ต้องตั้งค่ากับตัวแปร

  • /A – สวิตช์นี้จะใช้หากค่าต้องเป็นตัวเลขตามธรรมชาติ

ตัวอย่างต่อไปนี้แสดงวิธีง่ายๆในการใช้คำสั่ง set

ตัวอย่าง

@echo off 
set message=Hello World 
echo %message%
  • ในข้อมูลโค้ดด้านบนตัวแปรที่เรียกว่าข้อความถูกกำหนดและตั้งค่าด้วยค่า "Hello World"

  • หากต้องการแสดงค่าของตัวแปรโปรดทราบว่าตัวแปรนั้นจะต้องอยู่ในเครื่องหมาย%

เอาต์พุต

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

Hello World

การทำงานกับค่าตัวเลข

ในสคริปต์แบตช์ยังสามารถกำหนดตัวแปรเพื่อเก็บค่าตัวเลขได้ ซึ่งสามารถทำได้โดยใช้สวิตช์ / A

รหัสต่อไปนี้แสดงวิธีง่ายๆในการตั้งค่าตัวเลขด้วยสวิตช์ / A

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c%
  • อันดับแรกเรากำหนดค่าของ 2 ตัวแปรคือ a และ b เป็น 5 และ 10 ตามลำดับ

  • เรากำลังเพิ่มค่าเหล่านั้นและเก็บไว้ในตัวแปร c

  • สุดท้ายเรากำลังแสดงค่าของตัวแปร c

ผลลัพธ์ของโปรแกรมข้างต้นจะเป็น 15

ตัวดำเนินการเลขคณิตทั้งหมดทำงานในไฟล์แบตช์ ตัวอย่างต่อไปนี้แสดงตัวดำเนินการทางคณิตศาสตร์ที่สามารถใช้ในไฟล์แบตช์

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c% 
SET /A c = %a% - %b% 
echo %c% 
SET /A c = %b% / %a% 
echo %c% 
SET /A c = %b% * %a% 
echo %c%

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

15 
-5 
2 
50

ตัวแปรท้องถิ่นเทียบกับทั่วโลก

ในภาษาโปรแกรมใด ๆ มีตัวเลือกในการทำเครื่องหมายตัวแปรว่ามีขอบเขตบางประเภทเช่นส่วนของรหัสที่สามารถเข้าถึงได้ โดยปกติตัวแปรที่มีขอบเขตทั่วโลกสามารถเข้าถึงได้จากโปรแกรมใดก็ได้ในขณะที่ตัวแปรที่กำหนดขอบเขตภายในจะมีขอบเขตที่กำหนดไว้ซึ่งสามารถเข้าถึงได้

การเขียนสคริปต์ DOS ยังมีคำจำกัดความสำหรับตัวแปรภายในและทั่วโลก โดยค่าเริ่มต้นตัวแปรจะเป็นแบบโกลบอลสำหรับเซสชันพรอมต์คำสั่งทั้งหมดของคุณ เรียกใช้คำสั่ง SETLOCAL เพื่อกำหนดตัวแปรให้อยู่ในขอบเขตของสคริปต์ของคุณ หลังจากเรียกใช้ SETLOCAL การกำหนดตัวแปรใด ๆ จะเปลี่ยนกลับเมื่อเรียก ENDLOCAL เรียก EXIT หรือเมื่อการดำเนินการถึงจุดสิ้นสุดของไฟล์ (EOF) ในสคริปต์ของคุณ ตัวอย่างต่อไปนี้แสดงความแตกต่างเมื่อตั้งค่าตัวแปรภายในและทั่วโลกในสคริปต์

ตัวอย่าง

@echo off 
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL

สิ่งสำคัญบางประการที่ควรทราบเกี่ยวกับโปรแกรมข้างต้น

  • 'globalvar' ถูกกำหนดด้วยขอบเขตส่วนกลางและพร้อมใช้งานตลอดทั้งสคริปต์

  • ตัวแปร 'var' ถูกกำหนดในขอบเขตโลคัลเนื่องจากอยู่ระหว่างบล็อก 'SETLOCAL' และ 'ENDLOCAL' ดังนั้นตัวแปรนี้จะถูกทำลายทันทีที่คำสั่ง 'ENDLOCAL' ถูกเรียกใช้งาน

เอาต์พุต

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

13150
5

คุณจะสังเกตเห็นว่าคำสั่ง echo% var% จะไม่ให้ผลอะไรเลยเพราะหลังจากคำสั่ง ENDLOCAL ตัวแปร 'var' จะไม่มีอยู่อีกต่อไป

การทำงานกับตัวแปรสภาพแวดล้อม

หากคุณมีตัวแปรที่จะใช้กับไฟล์แบตช์คุณควรใช้ตัวแปรสภาพแวดล้อมเสมอ เมื่อกำหนดตัวแปรสภาพแวดล้อมแล้วจะสามารถเข้าถึงได้โดยใช้เครื่องหมาย% ตัวอย่างต่อไปนี้แสดงวิธีการดู JAVA_HOME ที่กำหนดบนระบบ ตัวแปร JAVA_HOME เป็นส่วนประกอบหลักที่โดยปกติแอปพลิเคชันต่างๆจะถูกใช้

@echo off 
echo %JAVA_HOME%

ผลลัพธ์จะแสดงไดเร็กทอรี JAVA_HOME ซึ่งจะขึ้นอยู่กับระบบ ต่อไปนี้เป็นตัวอย่างของผลลัพธ์

C:\Atlassian\Bitbucket\4.0.1\jre