les pido de ante mano que si tienen alguna recomendacion o encuentran algun error me lo hagan saber..
1. En la primera ejecución del bat, creas la carpeta placenta
2. Si la carpeta "placenta" está creada, el script termina su ejecución.
2. Si la fecha es mayor que... intentas ejecutar de nuevo el bat en un búcle infinito.
Pregunta: ¿Que sentido le das ejecutar de nuevo el bat en un búcle infinito, si cuando la carpeta "placenta" ya está creada, el propio bat se cierra?.
El comando no sirve para saltar a la raíz de "C:\", sirve para saltar a la raíz del dispositivo actual, es decir, si el """"virus"""" se ejecuta desde la unidad "D:\", buscará por "D:\placenta".
:_eofexit /B
Esto que haces es totálmente innecesario, aparte de que no es necesario llamar a ninguna etiqueta, para algo existe el "EOF":
Y así sales del bat actual.
EDITO: Siempre que no te encuentres dentro de una subrutina.
if exist placenta
(Exit /B
) & REm aquí llamas a 2 etiquetas innecesarias.
Esto es imposible que te funcione:
- el símbolo es "/", y tu estás comparando el guión "-".
- la variable DATE contiene 8 dígitos, no 6.
- no estás usando un orden de comparación correcto:
Tu estás haciendo esto
Si date fuese esto, daría positivo:
Assoc ".bat"="avifile"
Esto es muy incorrecto,
para tocar cosas dle registro hay que estudiar lo básico de él.
En muchos PC's funcionará como lo has dejado, pero desde luego no en todos,
el identificador "avifile" puede estar vacío, es decir, "avifile" no tiene porque estar asociado a ningún programa que reproduzca vídeos, por ponerte un ejemplo, cuando instalas un reproductor multimedia de terceros, puede modificar los identificadores por defecto, y eliminarlos.
En mi caso el identificador para los Avi es "UMPLAYER.AVI", si yo quisiera que tu bat me funcionase , debería hacer:
Assoc ".bat"="UMPLAYER.AVI"
Ya que si lo associo a "AVIFILE" obtengo como resultado algo muy distinto,
así que si lo quieres hacer bien, primero tienes que obtener el valor del identificador de los AVI.
Reg ADD "HKLM\..."
No te recomiendo que uses la raíz
Hkey_Local_Machine por los permisos del usuario, sería mejor que escribas en la raíz de la sesión del usuario local "HKCU", además, no fuerzas la escritura de la clave, y eso es muy importante.
Deberías escribir en las dos raizes para asegurarte mejor.
for /R
%%i in (*.bat
) do attrib +s +h
%%i
Esas ordenes no se llegan a procesar en ninguno de los casos ya que antes de llegar al FOR, o llamas a una etiqueta, o sales del código, pero el código no sigue,
pregunto, ¿
Has probado tu script?.
::busca archivos .bat y los infecta
for /R
%%i in (*.bat
) do attrib +s +h
%%i
Estás haciendo dos pasadas en el disco duro, eso puede tardar siglos usando batch, cuando puedes concatenar los dos comandos en el mismo FOR.
attrib +s +h %%i
¿Que pasa si la variable %%i contiene un archivo con espacios en el nombre? (KABOOM!)
¿Que pasa si intentas copiar un archivo cuando el archivo de destino ya existe? (KABOOM!)
2 razones por las que ese FOR no pueden funcionar, sin mencionar los permisos que el usuario tenga.
Y como crítica constructiva te diré que usas demasiados saltos de etiquetas y deberías aprender a in
dentar un código para hacer legible tus scripts, tu código está muy embrutecido.