tôi thấy @
được sử dụng trong bối cảnh như vậy:không "@" có ý nghĩa gì trong kịch bản batch của Windows
@echo off
@echo start eclipse.exe
không @
có ý nghĩa gì ở đây?
tôi thấy @
được sử dụng trong bối cảnh như vậy:không "@" có ý nghĩa gì trong kịch bản batch của Windows
@echo off
@echo start eclipse.exe
không @
có ý nghĩa gì ở đây?
Đ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
và
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 và 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.
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.
@
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
và 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.
Điều này có nghĩa là "không lặp lại lệnh này với đầu ra chuẩn".
Thay lạ,
echo off
sẽ gửi echo off
để đầu ra! Vì vậy,
@echo off
đặt hành vi echo tự động này - và dừng tất cả các lệnh trong tương lai.
Nguồn: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
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
.
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
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ó.
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
bạn làm lãng phí những nỗ lực của bạn.! Lòng thương hại –
không phải là câu trả lời. – PsychoData
@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
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