ฉันกำลังพยายามกำหนดและใช้ตัวแปรในไฟล์แบตช์ ดูเหมือนว่าควรจะง่าย:
@echo off
set location = "bob"
echo We're working with "%location%"
ผลลัพธ์ที่ฉันได้รับมีดังนี้:
We're working with ""
เกิดอะไรขึ้นที่นี่? ทำไมตัวแปรของฉันถึงไม่เป็นเสียงก้อง
ฉันกำลังพยายามกำหนดและใช้ตัวแปรในไฟล์แบตช์ ดูเหมือนว่าควรจะง่าย:
@echo off
set location = "bob"
echo We're working with "%location%"
ผลลัพธ์ที่ฉันได้รับมีดังนี้:
We're working with ""
เกิดอะไรขึ้นที่นี่? ทำไมตัวแปรของฉันถึงไม่เป็นเสียงก้อง
คำตอบ:
ช่องว่างก่อนที่=จะถูกตีความเป็นส่วนหนึ่งของชื่อและช่องว่างหลังจากนั้น (รวมทั้งเครื่องหมายคำพูด) จะถูกตีความเป็นส่วนหนึ่งของค่า ดังนั้นตัวแปรที่คุณสร้างขึ้นสามารถอ้างอิง%location %ได้ หากไม่ใช่สิ่งที่คุณต้องการให้ลบช่องว่างเพิ่มเติมในคำจำกัดความ
alias x = y* ในที่ดินระวัง?
x = y?
ช่องว่างมีความสำคัญ คุณสร้างชื่อตัวแปรที่มีค่าของ'location '
หมายเหตุ - เพิ่มเครื่องหมายคำพูดเดี่ยวล้อมรอบเพื่อเพิ่มตำแหน่งของพื้นที่
' "bob"'
หากคุณต้องการคำพูดในค่าของคุณแล้วรหัสของคุณควรมีลักษณะ
set location="bob"
หากคุณไม่ต้องการคำพูดรหัสของคุณควรมีลักษณะดังนี้
set location=bob
หรือดีกว่าเลย
set "location=bob"
ไวยากรณ์สุดท้ายป้องกันช่องว่างต่อท้ายโดยไม่ตั้งใจจากการรับค่าและยังป้องกันอักขระพิเศษเช่น& |ฯลฯ
%และอาจเป็นไปได้!หากเปิดใช้งานการขยายล่าช้า แต่ถ้าค่าที่จะมีคำพูดแล้วคุณจะต้องกังวลเกี่ยวกับเมื่อตัวหนีพิษเช่น|, &ฯลฯ
อินพุต location.bat
@echo off
cls
set /p "location"="bob"
echo We're working with %location%
pause
เอาท์พุต
We're working with bob
(คุณทำผิดพลาด: spaceและ" ")
set /pแจ้งให้ผู้ใช้และเก็บคำตอบในตัวแปรที่ระบุ เช่นset /p name="What is your name? " & echo Hello, %name%.
set /p "varname"="text"ผิด, มันจะสร้างตัวแปรที่ชื่อว่าlocation"(พร้อมด้วยเครื่องหมายคำพูดต่อท้าย!) set /p location="bob"มันควรจะเป็น แต่ถึงกระนั้นมันก็ไม่ตรงกับคำถามอีกต่อไปแล้ว
=ถูกตีความว่าเป็นส่วนหนึ่งของชื่อแล้วตัวแปรไม่สามารถนำมาอ้างอิงเป็นก็จะต้องมีการอ้างอิงเป็น%location%%location %นั่นคือการพิมพ์ผิดหรือเปล่า?