ฉันเห็นว่า@ถูกใช้ในบริบทดังกล่าว:
@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