Windows toplu komut dosyalarında "@" ne anlama geliyor?


132

Bu @tür bağlamlarda kullanıldığını gördüm :

@echo off

@echo start eclipse.exe

@Burada ne anlama geliyor?

Yanıtlar:


197

İlgili komutun çıktısının olmaması anlamına gelir. Aşağıdaki iki toplu iş dosyasını karşılaştırın:

@echo foo

ve

echo foo

İlki, yalnızca fooikincisi yazdırılırken çıktı olarak bulunur

H:\Stuff>echo foo 
foo

(en azından burada). Görüldüğü gibi çalıştırılan komut da görülebilir.

echo offtüm toplu iş dosyası için bunu kapatır. Ancak, echo offaramanın kendisi yine de görünür olacaktır. Bu yüzden @echo offtoplu iş dosyalarının başında görüyorsunuz . Komut yansımasını kapatın ve kapatarak komutu echo yoktur.

Bir hata mesajından önce neyin çalıştırıldığını görebileceğiniz için, bu satırı kaldırmak (veya yorumlamak) genellikle daha karmaşık toplu iş dosyalarında yararlı bir hata ayıklama aracıdır.



14

Bu @tek komut için yankıyı devre dışı bırakır. Onsuz echo start eclipse.exehat hem amaçlanan yazdıracak start eclipse.exe veecho start eclipse.exe çizgi.

echo offBy-varsayılan komut yankı kapalı dönüşler.

Böylece @echo offkomut yankılamasını sessizce kapatır ve yalnızca yazılması amaçlanan toplu iş yazarı çıktı aslında yazılır.


11

Anlamı DOS'tan miras alır. @ :

DOS 3.3 ve sonraki sürümlerinde, bir toplu iş komutunun yankısını gizler. Komut tarafından üretilen herhangi bir çıktı yankılanır.

Bu olmadan, komutu kullanarak komut yinelemesini kapatabilirsiniz echo off, ancak bu komut önce yankılanacaktır.


Bağlantı artık kesildi
ojchase

8

Varsayılan olarak, bir toplu iş dosyası çalışırken komutunu görüntüler. @Echo kapalı olan bu ilk komutun amacı bu ekranı kapatmaktır. "Echo off" komutu, "echo off" komutunun kendisi haricinde, tüm komut dosyası için ekranı kapatır. Öndeki "at" işareti "@" komutun kendisi için de geçerli olmasını sağlar.


3
Gönderinizde, diğer 5 yıllık gönderilerdeki gibi daha fazla veya daha iyi bilgi göremiyorum.
2016

5

@ Eklemek için başka bir yararlı zaman FOR, komut satırında kullandığınız zamandır . Örneğin:

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

Önceki satır her dosya için gösterilir : komut istemi, ECHOkomut ve ECHOkomutun sonucu . Bu yoldan:

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

Sadece ECHOkomutun sonucu gösterilir.


@PsychoData: Bu arada soruyu zaten aynı şekilde yanıtlamış olan diğer 4 yanıta ek olarak yararlı bilgiler sağlayan tek yanıta olumsuz oy vermiş olmanız komik ...
Aacini

6
Olumsuz oy verdim çünkü bu onun sorusuna bir cevap değildi. @'Nin ne yaptığına dair bir açıklama bile yapmıyorsunuz. Harika kullanım örnekleriniz varsa, harika, ama yine de sorusunun cevabı değil. Ayrıca cevabı, ne yaptığı ve nereden geldiğine dair bahis açıklamasıyla birlikte yükselttiğimi de bilmiyor olabilirsiniz. Sebepsiz yere olumsuz oy vermedim. "Cevabınız" bir cevap değil. Bu biraz alakalı bir ifadedir.
PsychoData

2

Aşağıdaki gibi bir 'scriptBlock'a @ ekleyebilirsiniz:

@(
  echo don't echoed
  hostname
)
echo echoed

ve özellikle bunu yapmayın :)

for %%a in ("@") do %%~aecho %%~a
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.