ฉันเห็นว่า@
ถูกใช้ในบริบทดังกล่าว:
@echo off
@echo start eclipse.exe
ที่@
นี่หมายความว่าอย่างไร?
ฉันเห็นว่า@
ถูกใช้ในบริบทดังกล่าว:
@echo off
@echo start eclipse.exe
ที่@
นี่หมายความว่าอย่างไร?
คำตอบ:
หมายความว่าจะไม่ส่งออกคำสั่งที่เกี่ยวข้อง เปรียบเทียบไฟล์แบตช์สองไฟล์ต่อไปนี้:
@echo foo
และ
echo foo
อดีตมีfoo
ผลเป็นเฉพาะในขณะที่พิมพ์หลัง
H:\Stuff>echo foo
foo
(ที่นี่อย่างน้อย) ดังจะเห็นได้ว่าคำสั่งที่เรียกใช้สามารถมองเห็นได้เช่นกัน
echo off
จะปิดสิ่งนี้สำหรับไฟล์แบตช์ที่สมบูรณ์ อย่างไรก็ตามการecho off
เรียกตัวเองจะยังคงปรากฏให้เห็น ซึ่งเป็นสาเหตุที่คุณเห็น@echo off
ในส่วนเริ่มต้นของไฟล์แบตช์ ปิดการสะท้อนคำสั่งและอย่าสะท้อนคำสั่งที่ปิดอยู่
การลบบรรทัดนั้น (หรือแสดงความคิดเห็น) มักเป็นเครื่องมือดีบักที่มีประโยชน์ในไฟล์แบตช์ที่ซับซ้อนมากขึ้นเนื่องจากคุณสามารถดูสิ่งที่เรียกใช้ก่อนที่จะมีข้อความแสดงข้อผิดพลาด
หมายความว่า "ไม่ต้องสะท้อนคำสั่งไปยังเอาต์พุตมาตรฐาน"
ค่อนข้างแปลก
echo off
จะส่งecho off
ไปที่เอาท์พุท! ดังนั้น,
@echo off
ตั้งค่าลักษณะการทำงานของเสียงสะท้อนอัตโนมัตินี้และหยุดการทำงานสำหรับคำสั่งในอนาคตทั้งหมดด้วย
ที่มา: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
@
พิการสะท้อนว่าคำสั่งอย่างใดอย่างหนึ่ง ก็ไม่มีecho start eclipse.exe
เส้นจะพิมพ์ทั้งตั้งใจstart eclipse.exe
และecho start eclipse.exe
บรรทัด
echo off
จะปิดการสะท้อนคำสั่งโดยค่าเริ่มต้น
ดังนั้นจึง@echo off
ปิดการสะท้อนคำสั่งอย่างเงียบ ๆ และเอาต์พุตเฉพาะผู้เขียนแบทช์ที่ตั้งใจจะเขียนเท่านั้นที่เขียนจริง
สืบทอดความหมายจาก DOS @ :
ใน DOS เวอร์ชัน 3.3 ขึ้นไปซ่อนเสียงสะท้อนของคำสั่งแบตช์ เอาต์พุตใด ๆ ที่สร้างโดยคำสั่งจะถูกสะท้อน
หากไม่มีคุณสามารถปิดการสะท้อนคำสั่งโดยใช้echo off
คำสั่งได้ แต่คำสั่งนั้นจะถูกสะท้อนก่อน
ตามค่าเริ่มต้นไฟล์แบตช์จะแสดงคำสั่งขณะทำงาน จุดประสงค์ของคำสั่งแรกที่ปิด @echoคือปิดการแสดงผลนี้ คำสั่ง "echo off" จะปิดการแสดงผลสำหรับสคริปต์ทั้งหมดยกเว้นคำสั่ง "echo off" เอง เครื่องหมาย "@" ด้านหน้าทำให้คำสั่งใช้กับตัวเองเช่นกัน
เวลาที่มีประโยชน์อีกอย่างในการรวม @ คือเมื่อคุณใช้FOR
ในบรรทัดคำสั่ง ตัวอย่างเช่น:
FOR %F IN (*.*) DO ECHO %F
บรรทัดก่อนหน้าแสดงสำหรับทุกไฟล์ : พรอมต์ECHO
คำสั่งคำสั่งและผลลัพธ์ของECHO
คำสั่ง ทางนี้:
FOR %F IN (*.*) DO @ECHO %F
เพียงแค่แสดงผลลัพธ์ของECHO
คำสั่ง
คุณสามารถรวม @ ใน 'scriptBlock' ดังนี้:
@(
echo don't echoed
hostname
)
echo echoed
และโดยเฉพาะอย่าทำอย่างนั้น :)
for %%a in ("@") do %%~aecho %%~a