Apa artinya "@" dalam skrip batch Windows


132

Saya melihat @digunakan dalam konteks seperti:

@echo off

@echo start eclipse.exe

Apa yang dimaksud di @sini?

Jawaban:


197

Itu berarti tidak mengeluarkan perintah masing-masing. Bandingkan dua file batch berikut:

@echo foo

dan

echo foo

Yang pertama hanya foosebagai keluaran sementara yang terakhir dicetak

H:\Stuff>echo foo 
foo

(setidaknya di sini). Seperti dapat dilihat, perintah yang dijalankan juga terlihat.

echo offakan menonaktifkannya untuk file batch lengkap. Namun, echo offpanggilan itu sendiri masih akan terlihat. Itulah sebabnya Anda melihat @echo offdi awal file batch. Matikan gema perintah dan jangan gema perintah mematikannya.

Menghapus baris itu (atau berkomentar) sering kali merupakan alat debugging yang bermanfaat dalam file batch yang lebih kompleks karena Anda dapat melihat apa yang dijalankan sebelum pesan kesalahan.



14

The @menonaktifkan menggemakan untuk itu satu perintah. Tanpa itu, echo start eclipse.exejalur akan mencetak kedua dimaksudkan start eclipse.exe dan para echo start eclipse.exeline.

The echo offbergantian off dengan-default perintah bergema.

Jadi secara @echo offdiam-diam mematikan perintah yang bergema, dan hanya output yang ingin ditulis penulis batch yang benar-benar ditulis.


11

Itu mewarisi makna dari DOS. @ :

Dalam DOS versi 3.3 dan yang lebih baru, menyembunyikan gema dari perintah batch. Setiap output yang dihasilkan oleh perintah digaungkan.

Tanpa itu, Anda bisa mematikan perintah yang bergema menggunakan echo offperintah, tetapi perintah itu akan digaungkan terlebih dahulu.


Tautan sekarang terputus
ojchase

8

Secara default, file batch akan menampilkan perintahnya saat dijalankan. Tujuan dari perintah pertama ini yaitu @echo off adalah untuk mematikan tampilan ini. Perintah "echo off" mematikan tampilan untuk seluruh skrip, kecuali untuk perintah "echo off" itu sendiri. Tanda "at" "@" di depan membuat perintah juga berlaku untuk dirinya sendiri.


3
Saya tidak dapat melihat informasi lebih lanjut atau lebih baik dalam posting Anda, seperti pada posting 5 tahun lainnya.
jeb

5

Waktu lain yang berguna untuk menyertakan @ adalah ketika Anda menggunakan FORdi baris perintah. Sebagai contoh:

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

Baris sebelumnya ditampilkan untuk setiap file : prompt ECHOperintah, perintah, dan hasil dari ECHOperintah. Cara ini:

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

Hanya hasil dari ECHOperintah yang ditampilkan.


@PsychoData: Sungguh lucu bahwa Anda menurunkan satu-satunya jawaban yang memberikan informasi bermanfaat tambahan untuk 4 jawaban lainnya yang, pada saat itu, sudah menjawab pertanyaan dengan cara yang sama ...
Aacini

6
Saya menurunkan suara karena itu bukan jawaban untuk pertanyaannya. Anda bahkan tidak memberikan penjelasan tentang apa yang dilakukan @. Jika Anda memiliki contoh penggunaan yang bagus, bagus, tetapi itu masih bukan jawaban untuk pertanyaannya. Anda mungkin juga tidak tahu bahwa saya juga mengangkat jawaban dengan penjelasan taruhan tentang apa yang dilakukannya dan dari mana asalnya. Saya tidak hanya mengundurkan diri tanpa alasan. "Jawaban" Anda bukanlah jawaban. Ini adalah pernyataan yang agak terkait.
PsychoData

2

Anda dapat memasukkan @ dalam 'scriptBlock' seperti ini:

@(
  echo don't echoed
  hostname
)
echo echoed

dan terutama jangan lakukan itu :)

for %%a in ("@") do %%~aecho %%~a
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.