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?


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

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)


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
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.