2011-12-13 23 views

Trả lời

130

Điều đó có nghĩa là không xuất lệnh tương ứng. Hãy so sánh hai tập tin batch sau:

@echo foo 

echo foo 

Cựu chỉ có foo như sản lượng, trong khi các bản in sau

H:\Stuff>echo foo 
foo 

(ở đây, ít nhất). Cũng có thể thấy lệnh đang chạy cũng hiển thị.

echo off sẽ tắt chức năng này cho tệp hàng loạt hoàn chỉnh. Tuy nhiên, chính cuộc gọi echo off vẫn sẽ hiển thị. Đó là lý do tại sao bạn thấy @echo off trong phần đầu của các tệp lô. Tắt lệnh lặp lại không lặp lại lệnh tắt.

Xóa dòng đó (hoặc nhận xét nó ra) thường là công cụ gỡ lỗi hữu ích trong các tệp lô phức tạp hơn vì bạn có thể xem những gì được chạy trước một thông báo lỗi.

6

Nó thừa hưởng ý nghĩa từ DOS. @:

Trong phiên bản DOS 3.3 trở lên, ẩn tiếng vọng của lệnh lô. Bất kỳ đầu ra được tạo ra bởi lệnh được lặp lại.

Nếu không có, bạn có thể tắt lệnh lặp lại bằng cách sử dụng lệnh echo off, nhưng lệnh đó sẽ được lặp lại trước.

9

@ tắt tiếng vọng cho một lệnh đó. Nếu không có nó, dòng echo start eclipse.exe sẽ in cả hai đường kẻ dự định start eclipse.exe dòng echo start eclipse.exe.

echo off tắt lệnh theo mặc định lặp lại.

Vì vậy, @echo off tắt âm thầm lệnh lặp lại và chỉ xuất ra tác giả hàng loạt có ý định viết thực sự được viết.

5

Một thời gian hữu ích để bao gồm @ là khi bạn sử dụng FOR trong dòng lệnh. Ví dụ:

FOR %F IN (*.*) DO ECHO %F 

dòng trước chương cho mỗi tập tin: dấu nhắc lệnh, các ECHO lệnh, và kết quả của ECHO lệnh. Bằng cách này:

FOR %F IN (*.*) DO @ECHO %F 

Chỉ cần kết quả của lệnh ECHO.

+2

không phải là câu trả lời. – PsychoData

+0

@PsychoData: Thật buồn cười khi bạn downvoted câu trả lời duy nhất cung cấp một thông tin hữu ích bổ sung cho 4 câu trả lời khác, trong khi đó, đã trả lời câu hỏi theo cách tương tự ... – Aacini

+0

Tôi downvoted vì nó không phải là một trả lời cho câu hỏi của anh ta. Bạn thậm chí không đưa ra lời giải thích về những gì @ làm. Nếu bạn có những ví dụ tuyệt vời về cách sử dụng, tuyệt vời, nhưng nó vẫn không phải là câu trả lời cho câu hỏi của anh ấy. Bạn có thể cũng không biết rằng tôi cũng upvoted câu trả lời với lời giải thích đặt cược của những gì nó làm và nó đến từ đâu. Tôi đã không chỉ downvote không có lý do. Câu trả lời của bạn không phải là câu trả lời. Đó là một tuyên bố hơi liên quan. – PsychoData

2

bạn có thể bao gồm @ trong một 'scriptBlock' như thế này:

@(
    echo don't echoed 
    hostname 
) 
echo echoed 

và đặc biệt là không làm điều đó :)

for %%a in ("@") do %%~aecho %%~a 
2

Theo mặc định, một tập tin thực thi sẽ hiển thị lệnh của nó vì nó chạy. Mục đích của lệnh đầu tiên này @echo tắt là tắt màn hình này. Lệnh "echo off" tắt màn hình cho toàn bộ tập lệnh, ngoại trừ lệnh "echo off". Dấu "at" sign "@" ở phía trước làm cho lệnh cũng áp dụng cho chính nó.

+2

Tôi không thể thấy bất kỳ thông tin nào hay hơn trong bài đăng của bạn, như trong các bài đăng cũ 5 năm khác. – jeb

+0

bạn làm lãng phí những nỗ lực của bạn.! Lòng thương hại –

Các vấn đề liên quan