run - windows batch file virus
Qué significa "@" en las secuencias de comandos de lote de Windows (7)
Vi @
se usa en tales contextos:
@echo off
@echo start eclipse.exe
¿Qué significa @
aquí?
De forma predeterminada, 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" desactiva la visualización de todo el script, excepto el comando "echo off". El signo "at" "@" delante hace que el comando también se aplique a sí mismo.
El @
desactiva el eco para ese comando. Sin él, la línea echo start eclipse.exe
imprimirá el start eclipse.exe
previsto start eclipse.exe
y la línea echo start eclipse.exe
.
El echo off
desactiva el eco del comando by-default.
Por lo tanto, @echo off
silenciosamente desactiva el eco de comando y solo se genera el resultado del autor del lote que se va a escribir.
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, podría desactivar el eco de comandos utilizando el comando echo off
, pero ese comando se repetirá primero.
Otro momento útil para incluir @ es cuando usa FOR
en la línea de comando. Por ejemplo:
FOR %F IN (*.*) DO ECHO %F
Muestra de línea anterior para cada archivo : el símbolo del sistema, el comando ECHO
y el resultado del comando ECHO
. De esta manera:
FOR %F IN (*.*) DO @ECHO %F
Solo se muestra el resultado del comando ECHO
.
Significa "no repetir el comando a la salida estándar".
Curiosamente,
echo off
enviará echo off
a la salida! Asi que,
@echo off
desactiva este comportamiento de eco automático y lo detiene para todos los comandos futuros.
Fuente: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
Significa no emitir el comando respectivo. Compare los siguientes dos archivos por lotes:
@echo foo
y
echo foo
El primero solo tiene foo
como 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 off
apagará esto para el archivo de lote completo. Sin embargo, el echo off
call aún sería visible. Por eso ve @echo off
al comienzo de los archivos por lotes. Desactive los ecos de los comandos y no repita el comando apagándolo.
Quitar esa línea (o comentarla) suele ser una herramienta de depuración útil en archivos por lotes más complejos, ya que puede ver lo que se ejecuta antes de un mensaje de error.
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