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