¿Qué significa "@" en las secuencias de comandos por lotes de Windows

132

Vi que @se usa en tales contextos:

@echo off

@echo start eclipse.exe

¿Qué @significa aquí?

Baiyan Huang
fuente

Respuestas:

197

Significa no dar salida al comando respectivo. Compare los siguientes dos archivos por lotes:

@echo foo

y

echo foo

El primero solo tiene foocomo salida mientras que el segundo imprime

H:\Stuff>echo foo 
foo

(aquí, al menos). Como se puede ver, el comando que se ejecuta también es visible.

echo offlo desactivará para el archivo por lotes completo. Sin embargo, la echo offllamada en sí aún sería visible. Es por eso que ves @echo offal comienzo de los archivos por lotes. Apague el comando que hace eco y no haga eco del comando que lo apaga.

Eliminar esa línea (o comentarla) suele ser una herramienta de depuración útil en archivos por lotes más complejos, ya que puede ver qué se ejecuta antes de un mensaje de error.

Joey
fuente
14

El @eco desactivado para ese comando. Sin ella, la echo start eclipse.exelínea imprimirá tanto la intención start eclipse.exe como la echo start eclipse.exelínea.

Los echo offapaga el eco de comando predeterminado.

Entonces, @echo offsilenciosamente apaga el eco del comando, y solo la salida del autor del lote que se pretende escribir se escribe realmente.

sarnold
fuente
11

Hereda el significado de DOS. @ :

En DOS versión 3.3 y posterior, oculta el eco de un comando por lotes. Cualquier salida generada por el comando se repite.

Sin él, puede desactivar el comando haciendo eco usando el echo offcomando, pero ese comando se repetiría primero.

Damien_The_Unbeliever
fuente
El enlace ahora está roto
compre el
8

Por defecto, un archivo por lotes mostrará su comando mientras se ejecuta. El propósito de este primer comando que @echo off es apagar esta pantalla. El comando "echo off" apaga la pantalla de todo el script, excepto el comando "echo off" en sí. El signo "at" "@" al frente hace que el comando también se aplique a sí mismo.

Muhammad Faizan Khan
fuente
3
No puedo ver más o mejor información en su publicación, como en las otras publicaciones de 5 años.
jeb
5

Otro momento útil para incluir @ es cuando se usa FORen la línea de comando. Por ejemplo:

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

La línea anterior se muestra para cada archivo : el símbolo del sistema, el ECHOcomando y el resultado del ECHOcomando. De esta manera:

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

Solo ECHOse muestra el resultado del comando.

Aacini
fuente
@PsychoData: Es curioso que haya rechazado la única respuesta que proporciona información útil adicional a las otras 4 respuestas que, por el momento, ya respondió la pregunta de la misma manera ...
Aacini
66
Voté en contra porque no era una respuesta a su pregunta. Ni siquiera das una explicación de lo que hace el @. Si tienes buenos ejemplos de uso, genial, pero aún así no es una respuesta a su pregunta. Es posible que no sepas que también voté por la respuesta con la explicación de la apuesta de lo que hace y de dónde viene. No solo voté en contra sin ninguna razón. Su "respuesta" no es una respuesta. Es una declaración algo relacionada.
PsychoData
2

puedes incluir @ en un 'scriptBlock' como este:

@(
  echo don't echoed
  hostname
)
echo echoed

y especialmente no hagas eso :)

for %%a in ("@") do %%~aecho %%~a
walid2mi
fuente