Dấu tại (@) trong tệp loạt là gì và nó làm gì?


101

Một người quen thuộc từ xa với tập lệnh hàng loạt windows / dos sẽ nhận ra dòng này:

@echo off

Trong nhiều ngày, tôi đã rất vui với cảm giác rằng nó có nghĩa là @như thế nào echo offđược viết ở đầu của lô và thế là xong.

Tuy nhiên, gần đây tôi đã vượt qua một dòng như thế này:

@php foo bar

một dòng khác như thế này:

@call \\network\folder\batch.bat

Điều này củng cố sự nghi ngờ của tôi rằng nó @có nhiều thứ hơn là chỉ echochuyển đổi chế độ. Tuy nhiên, @nó không được liệt kê trong Windows XP: Tham chiếu dòng lệnh AZ mà tôi cố gắng sử dụng làm tham chiếu và do đó tôi không chắc làm thế nào để tìm thông tin chính xác về điều này:

Đăng @nhập hàng loạt là gì, thuật ngữ của nó là gì và nó làm gì?


3
Không có gì để thêm vào câu trả lời ismail. Nhưng chỉ để tham khảo trong tương lai, câu trả lời được bao gồm trong tài liệu "Tham chiếu dòng lệnh AZ" được chỉ định trong Remarksphần echolệnh.
MC ND

2
@MCND Tôi hiểu rồi, cảm ơn! Tôi không biết nó là tiếng vọng cụ thể ... tốt, tôi đoán tôi đã hiểu sai tầm quan trọng của echohàng loạt. Đây là liên kết đến echo # nhận xét .
n611x007

2
Tôi đã nghe nó được gọi là "tiếng kêu", nhưng tôi chỉ có bằng chứng mang tính giai thoại cho điều đó.
RustyTheBoyRobot

Câu trả lời:


152

Tại biểu tượng - @

Lệnh @ symbolcho bộ xử lý lệnh bớt dài dòng hơn; để chỉ hiển thị đầu ra của lệnh mà không hiển thị lệnh đang được thực thi hoặc bất kỳ lời nhắc nào liên quan đến việc thực thi. Khi được sử dụng, nó được thêm vào đầu lệnh, không cần thiết phải để khoảng cách giữa "@" và lệnh.

Khi "tiếng vang" được đặt thành "tắt", không cần thiết phải sử dụng "@" vì đặt "tiếng vang" thành "tắt" khiến hành vi này trở thành tự động. "Echo" thường được đặt thành "on" theo mặc định khi bắt đầu thực thi một tập lệnh. Đây là lý do "@echo off" thường được sử dụng, để tắt tiếng vọng mà không hiển thị hành động tắt nó.

echo verbose
@echo less verbose
pause

3
Đã chấp nhận điều này vì giải thích tại chỗ mà không có ... bất kỳ lời nhắc nào liên quan đến việc thực thi và để nói những điều như (độ dài của) bộ xử lý lệnh và nói về không gian. :) Lô test đẹp quá!
n611x007

7
Rõ ràng điều này là hiển nhiên đối với mọi người nhưng tôi không biết rằng điều này chỉ hoạt động khi được thực thi từ một .battệp, tức là nó không hoạt động ngay từ dòng lệnh.
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. Đây là sự thật. Tôi cũng nhận thấy rằng điều này có thể gây ra các tác dụng phụ không mong muốn. Ví dụ - sử dụng @copysau một clip < file.txt & pauselệnh đối với một số lý do gây ra clipboard của tôi để sao chép văn bản 1 file copied.
dgo

Điều tồi tệ là tôi không thể có tài liệu chính thức về nó!
Robert

-1

Biểu tượng "at" được đặt ở đầu không chỉ ẩn lệnh mà còn có thể được sử dụng để nối các đối số lệnh được lưu trữ trong tệp văn bản. Cú pháp là lệnh exe @ (nếu tôi nhớ không nhầm)


3
Không, nếu bạn cố gắng thực hiện một cái gì đó như myExe@myCommandsnó không thành công vớiis not recognized as an internal or external command
jeb

@jeb, Điều gì xảy ra khi bạn đặt dấu cách xung quanh @biểu tượng? Tôi không thể làm cho nó hoạt động, nhưng tôi đã thấy nó được sử dụng trong các tệp hàng loạt ...
jdk1.0
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.