Apa yang dimaksud dengan tanda (@) dalam file batch dan apa fungsinya?

101

Seseorang yang akrab dengan skrip batch windows / dos akan mengenali baris ini:

@echo off

Selama beberapa hari, saya senang dengan sentimen bahwa @begitulah echo offyang dimaksudkan untuk ditulis di bagian atas kumpulan dan hanya itu.

Namun, baru-baru ini saya menemukan garis seperti ini:

@php foo bar

dan baris lain seperti ini:

@call \\network\folder\batch.bat

Ini memperkuat kecurigaan saya yang @memiliki lebih dari sekadar echoperalihan mode. Namun @tidak terdaftar di Windows XP: Referensi baris perintah AZ yang saya coba gunakan sebagai referensi dan oleh karena itu saya tidak yakin bagaimana menemukan informasi pasti tentang ini:

Apa itu @sign in batch, apa istilahnya, dan apa fungsinya?

n611x007
sumber
3
Tidak ada yang bisa ditambahkan ke jawaban ismail. Tetapi hanya untuk referensi di masa mendatang, jawabannya disertakan dalam dokumentasi "Referensi baris perintah AZ" yang ditunjukkan di bawah Remarksbagian echoperintah.
MC ND
2
@MCND Saya mengerti, terima kasih! Tidak tahu itu khusus gema ... yah, saya rasa saya salah paham tentang pentingnya echobatch. Ini adalah tautan ke echo # komentar .
n611x007
2
Saya pernah mendengarnya disebut "squelch", tetapi saya hanya memiliki bukti anekdot untuk itu.
RustyTheBoyRobot
3
Kemungkinan duplikat dari Apa arti "@" dalam skrip batch Windows
gunr2171

Jawaban:

152

Di simbol - @

Perintah tersebut @ symbolmemberi tahu prosesor perintah agar tidak terlalu bertele-tele; untuk hanya menampilkan keluaran dari perintah tanpa menunjukkannya sedang dijalankan atau petunjuk apa pun yang terkait dengan eksekusi. Jika digunakan, itu ditambahkan ke awal perintah, tidak perlu meninggalkan spasi antara "@" dan perintah.

Saat "echo" disetel ke "off", tidak perlu menggunakan "@" karena menyetel "echo" ke "off" menyebabkan perilaku ini menjadi otomatis. "Echo" biasanya disetel ke "aktif" secara default saat eksekusi skrip dimulai. Inilah alasan mengapa "@echo off" biasanya digunakan, untuk mematikan gema tanpa menampilkan tindakan mematikannya.

echo verbose
@echo less verbose
pause
Cerah
sumber
3
Menerima yang ini untuk penjelasan di tempat tentang tanpa ... petunjuk apa pun yang terkait dengan eksekusi , dan untuk mengatakan hal-hal seperti (verbositas) prosesor perintah , dan menceritakan tentang ruang. :) Batch uji yang bagus juga!
n611x007
7
Rupanya ini jelas untuk semua orang tetapi saya tidak tahu bahwa ini hanya berfungsi ketika dijalankan dari .batfile, yaitu tidak bekerja langsung dari baris perintah.
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. Ini benar. Saya juga menemukan bahwa ini dapat menyebabkan efek samping yang tidak diinginkan. Misalnya - menggunakan @copymengikuti clip < file.txt & pauseperintah karena alasan tertentu menyebabkan clipboard saya menyalin teks 1 file copied.
dgo
Hal buruknya adalah saya tidak bisa mendapatkan dokumen resmi tentang itu!
Robert
-1

Tidak hanya simbol "at" yang ditempatkan di awal menyembunyikan perintah, ini juga dapat digunakan untuk menambahkan argumen perintah yang disimpan dalam file teks. Sintaksnya adalah exe @ commands (jika saya ingat dengan benar)

Yuri Constantinoff
sumber
3
Tidak, jika Anda mencoba untuk mengeksekusi sesuatu myExe@myCommandsyang gagal denganis not recognized as an internal or external command
jeb
@jeb, Apa yang terjadi jika Anda meletakkan spasi di sekitar @simbol? Saya tidak bisa membuatnya berfungsi, tetapi saya telah melihatnya digunakan dalam file batch ...
jdk1.0