เครื่องหมาย at (@) ในไฟล์แบตช์คืออะไรและทำหน้าที่อะไร


101

ผู้ที่คุ้นเคยกับการเขียนสคริปต์แบตช์ windows / dos จากระยะไกลจะรู้จักบรรทัดนี้:

@echo off

เป็นเวลาหลายวันที่ฉันมีความสุขกับความรู้สึกที่ว่านั่น@คือวิธีecho offที่จะเขียนไว้ที่ด้านบนของชุดงานและนั่นก็คือมัน

อย่างไรก็ตามเมื่อเร็ว ๆ นี้ฉันได้ข้ามเส้นแบบนี้:

@php foo bar

และอีกบรรทัดดังนี้:

@call \\network\folder\batch.bat

สิ่งนี้ตอกย้ำความสงสัยของฉันที่@มีมากกว่าแค่การechoสลับโหมด อย่างไรก็ตาม@ไม่มีอยู่ในWindows XP: AZ การอ้างอิงบรรทัดคำสั่งซึ่งฉันพยายามใช้เป็นข้อมูลอ้างอิงดังนั้นฉันไม่แน่ใจว่าจะค้นหาข้อมูลที่ชัดเจนเกี่ยวกับสิ่งนี้ได้อย่างไร:

การ@ลงชื่อเข้าใช้ชุดงานคืออะไรคำศัพท์สำหรับมันคืออะไรและทำหน้าที่อะไร


3
ไม่มีอะไรให้เพิ่มในคำตอบของ ismail แต่สำหรับการอ้างอิงในอนาคตคำตอบจะรวมอยู่ในเอกสาร"บรรทัดคำสั่งอ้างอิง AZ" ที่ระบุไว้ในRemarksส่วนของechoคำสั่ง
MC ND

2
@MCND เห็นแล้วขอบคุณ! ไม่รู้ว่ามันเป็นเสียงสะท้อนที่เฉพาะเจาะจง ... ฉันเดาว่าฉันเข้าใจผิดถึงความสำคัญของechoแบทช์ นี่คือการเชื่อมโยงไปสะท้อน # หมายเหตุ
n611x007

2
ฉันเคยได้ยินมันเรียกว่า "squelch" แต่ฉันมีหลักฐานเพียงเล็กน้อยเท่านั้น
RustyTheBoyRobot

3
อาจซ้ำกันของความหมาย "@" ใน Windows batch scripts
gunr2171

คำตอบ:


152

ที่สัญลักษณ์ - @

@ symbolบอกประมวลผลคำสั่งที่จะน้อย verbose; เพื่อแสดงเฉพาะผลลัพธ์ของคำสั่งโดยไม่แสดงว่ากำลังดำเนินการหรือพร้อมต์ใด ๆ ที่เกี่ยวข้องกับการดำเนินการ เมื่อใช้แล้วจะอยู่ข้างหน้าคำสั่งไม่จำเป็นต้องเว้นช่องว่างระหว่าง "@" และคำสั่ง

เมื่อตั้งค่า "echo" เป็น "off" ก็ไม่จำเป็นต้องใช้ "@" เพราะการตั้งค่า "echo" เป็น "off" จะทำให้พฤติกรรมนี้กลายเป็นอัตโนมัติ โดยปกติแล้ว "เสียงสะท้อน" จะถูกตั้งค่าเป็น "เปิด" โดยค่าเริ่มต้นเมื่อการเรียกใช้สคริปต์เริ่มต้นขึ้น นี่คือเหตุผลที่มักใช้ "@echo off" เพื่อปิดเสียงสะท้อนโดยไม่ต้องแสดงการปิดเสียง

echo verbose
@echo less verbose
pause

3
ยอมรับสิ่งนี้สำหรับคำอธิบายในสถานที่โดยไม่มี ... พร้อมต์ใด ๆ ที่เกี่ยวข้องกับการดำเนินการและสำหรับการพูดสิ่งต่างๆเช่น (verbosity of) ตัวประมวลผลคำสั่งและการบอกเกี่ยวกับพื้นที่ :) ชุดทดสอบที่ดีเช่นกัน!
n611x007

7
เห็นได้ชัดว่านี่เป็นสิ่งที่ชัดเจนสำหรับทุกคน แต่ฉันไม่รู้ว่าสิ่งนี้ใช้ได้เฉพาะเมื่อเรียกใช้งานจาก.batไฟล์นั่นคือมันไม่ทำงานโดยตรงจากบรรทัดคำสั่ง
doABarrelRoll721

1
When "echo" is set to "off" it is not necessary to use "@" because setting "echo" to "off" causes this behavior to become automatic. นี่คือเรื่องจริง ฉันยังพบว่าสิ่งนี้อาจทำให้เกิดผลข้างเคียงที่ไม่ต้องการได้ ยกตัวอย่างเช่น - ใช้@copyตามคำสั่งด้วยเหตุผลบางอย่างที่ทำให้เกิดคลิปบอร์ดของฉันเพื่อคัดลอกข้อความclip < file.txt & pause 1 file copied
dgo

สิ่งที่ไม่ดีคือฉันไม่มีเอกสารอย่างเป็นทางการ!
Robert

-1

ไม่เพียง แต่สัญลักษณ์ "at" ที่อยู่ในตอนต้นจะซ่อนคำสั่งเท่านั้น แต่ยังสามารถใช้เพื่อต่อท้ายอาร์กิวเมนต์คำสั่งที่เก็บไว้ในไฟล์ข้อความ ไวยากรณ์คือคำสั่ง exe @ (ถ้าจำไม่ผิด)


3
ไม่ถ้าคุณพยายามดำเนินการบางอย่างเช่นmyExe@myCommandsมันล้มเหลวด้วยis not recognized as an internal or external command
jeb

@jeb จะเกิดอะไรขึ้นเมื่อคุณใส่ช่องว่างรอบ ๆ@สัญลักษณ์ ฉันไม่สามารถใช้งานได้ แต่ฉันเคยเห็นมันใช้ในไฟล์แบตช์ ...
jdk1.0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.