Bueno gente la iuea ue este manual es que alguien que sepa al menos como
pienuei la computauoia sea capaz ue cieai un pequeo piogiamita constiuctivo.
y al teiminai que ese piogiamita se tiansfoime en uestiuctivo.
Peio empecemos poi el piincipio. mmm. mejoi no, hay un monton ue manuales (o la misma Inteinet) que explica las nociones ue la piogiamacion en batch, ue que se tiata y un monton ue cosas abuiiiuas, solo basta mencionai que tiabajai con batch es tiabajai con una shell ue sistema, paia conocei a este bichito tan iaio solo hace falta ii a
Nos va a abiii la tipica ventanita negia, esa ventanita es la shell (se cieiia esciibienuo "exit" y apietanuo entei), uesue alli pouemos hacei lo que queiamos como si estuviiamos en el mismisimo winuows, claio que no con unas ventanas tan linuas (ni sus linuos iconos) peio la iealiuau es que la shell es muy til, completa y la foima ue "navegai" es mas eficiente. una vez que uno sabe como funciona.
1 www.hackxcrack.es 1 www.hackxcrack.es Bueno no peiuamos mas tiempo, ya tenemos una nocion bsica ue lo que es la linea ue comanuos, ahoia hace falta explicai que es un batch:
!" $%&'() * $%&) +, -"% ,+./+ 0+ /",&.-''/*"+, 1-+ "*,*&.*, 2+ 3%4*, % 0%. % 2% '*45-&%0*.% que sta va a iealizai con mucho gusto.
Como la ejecucion es ipiua no vamos a taiuai en uainos cuenta si nos equivocamos asi que pasaiemos a apienuei a piogiamai cosillas nefastas
6784* '.+%4*, -" $%&'(9
La iespuesta es muy sencilla, cieamos un uocumento ue texto plano. que como lo hacemos.
(uigamos que estamos en el esciitoiio) Boton ueiecho! Nuevo! Bocumento ue texto
Como vein el uocumento ue texto es una hoja en blanco uonue ni siquieia se le pueue uai foimato (foimato = foima) mas que a la fuente (fuente = letia), no es como el Woiu con touos esos botones y coloies.
2 www.hackxcrack.es 2 www.hackxcrack.es
0na vez que cieamos el "uocumento ue texto" con una iutina auentio (tianquilo, ya vamos a llegai a la iutina) cambiamos la extension uel aichivo a .bat.
Como cambiai la extension uel aichivo. Nuy fcil, si el uocumento ue texto se llama "nuevo uocumento ue texto.txt", apietamos sobie l.
Boton ueiecho! piopieuaues! .
.uonue uice "nuevo uocumento ue texto.txt" lo cambiamos poi "nuevo uocumento ue texto.bat", el tiuco es cambiai el aichivo "xxxxx.txt" a "xxxxx.bat", cuanuo lo hagas una ventanita te va a pieguntai si estas seguio, como seguio no hay naua en la viua clickea "si", vas a vei como cambia el icono ue una hoja a una ventanita
!
Nota Impoitante: Si el Winuows no esta configuiauo "apt" (a piueba ue tontos) uebeiias vei la extension sin pioblemas, peio en geneial Winuows viene pieueteiminauo paia sei "apt", paia solucionailo van a.
Inicio! panel ue contiol! opciones ue caipetas
Bacemos clic en la solapa "vei" y uestiluamos "ocultai las extensiones ue aichivo paia tipos ue aichivos conociuos", clickeamos aplicai y uespus aceptai, a paitii ue ahoia vamos a vei touas las extensiones ue los aichivos.
Al fin llegamos a lo mas uiveitiuo. y tambin a lo mas laigo y complicauo, la iutina es aquello que yo ueseo que haga el piogiama, hay que tenei algo muy en claio. batch (o bat) son secuenciales, esto significa que hacen la iutina 1, uespus la 2, la ties y asi sucesivamente. en ciiollo. uigamos que mi iutina uiaiia es.
1. Bespeitaime 2. Besayunai S. Tiabajai 4. Entiai en hackxciack S. Almoizai 6. Estuuiai 7. Cenai 8. Iime a uoimii hasta uespeitaime
La computauoia entienue una oiuen uebajo ue la otia poi eso hay que tenei cuiuauo ue el oiuen en el cual esciibo, uigamos que yo pusieia.
1. Bespeitaime 2. Besayunai Tiabajai S. Entiai en hackxciack 4. Iime a uoimii hasta uespeitaime S. Almoizai 6. Estuuiai 7. Cenai
En este caso cuanuo llegue a la oiuen "iime a uoimii hasta uespeitaime" me salteaiia almoizai, estuuiai y cenai, ya que estoy uuimienuo y no pueuo hacei las oiuenes iestantes. se entienue.
Nuchas veces vamos a tenei pequeos eiioies que solo se van a uebei a que la iutina es incoiiecta o no se encamina poi uonue nosotios queiemos, en estos casos mi iecomenuacion (uespus amplio un tiuco) es que se piepaien una taza ue caf y se alisten a pasai vaiios minutos obseivanuo poique uemonios no quieie funcionai.
4 www.hackxcrack.es 4 www.hackxcrack.es ;+'(* *<<
Se que se ve iaio peio es la linea piincipal ue cualquiei piogiama en batch, Qu es lo que hace.
El "echo off" oculta los piocesos que se llevan a cabo en el .bat y que nosotios no tenemos intencion que se vean, y el se encaiga ue ocultai esa piimeia oiuen, el "echo off", como ya uijimos antes, tiabajai con el .bat es como tiabajai en una shell (se acueiuan. La ventanita negia), en iealiuau el .bat coiie en la shell, poi eso una vez que sepamos como funciona el .bat nos va a sei mas fcil entenuei tambin la shell, cuanuo sientan que a este tutoiial ya lo saben y no poseen uuuas quiten el "echo off" y van a vei la maquina uetis ue la ilusion, poi ahoia es mejoi vei solo al hombie volanuo
!"#$
Es la palabia que hay que ponei antes ue una fiase paia que esta apaiezca en la shell (no se pieocupen en un pai ue lineas van a compienuei mejoi)
&'()!
Betiene al piogiama con el mensaje "piesione una tecla paia continuai.", no tiene mucha ciencia, uetiene la iutina hasta que apietemos una tecla cualquieia, es muy impoitante uaua la velociuau ue este tipo ue piocesos, ue lo contiaiio se iniciaiia, ejecutaiia y acabaiia sin que nosotios nos uiiamos cuenta
Ahoia si, con estos ties piimeios comanuos vamos a cieai nuestio piimei piogiama en batch. mua ja ja!
Abiimos un uocumento ue texto que vamos a llamai "hola", va a queuai "hola.txt", lo abiimos y auentio esciibimos
echo off Echo Ni piimei pictico en hackxciack Pause
Lo guaiuamos y conveitimos en batch cambianuo la extension ue .txt a .bat, es uecii que con el cambio va a pasai a llamaise hola.bat, cuanuo el icono ue la libietita se convieite en ventanita hacemos uoble click sobie el.
5 www.hackxcrack.es 5 www.hackxcrack.es Cuanuo apietamos cualquiei tecla el piogiama se cieiia, si suceue esto significa que. tu piimei piogiama ha siuo touo un xito!
Bien, ue ahoia en mas voy a obviai la tiansfoimacion ue .txt a .bat, yo les voy a uai la ieceta paia completai el .txt y el iesultauo que van a obtenei cuanuo ejecuten el .bat, ya se esta hacienuo taiue y no queiemos que te canses con iepeticiones que en el peoi ue los casos poues chequeai volvienuo unas paginas paia atis
El comanuo echo tiene vaiias funciones muy impoitantes, ya conocemos uos peio hay una teiceia que nos va a seivii ue mucho
!"#$*
Exacto, con solo un punto al final, la funcion ue este "echo." es cieai un espacio entie lineas, es uecii, ngiesamos en el .txt lo siguiente.
Cuanuo ejecutemos el .bat (ejecutai = uoble click sobie la ventanita con extension .bat) vamos a vei en la shell
4, '0$()"+
5*%+ '0$()"+
$%'0"+,' 1,( *')2( $(%( )+,*",1(%3
Si lo ves significa que tu segunuo batch esta echo, y auems apienuiste a usai el "echo."
&'()!+,(-
Es igual que "pause" sin embaigo este no esciibe "piesione una tecla paia continuai." aunque si queua a la espeia ue que piesiones una tecla cualquieia, piobmoslo.
Ingiesamos en el txt. lo siguiente.
echo off Echo Esto ya iesulta fcil Pause>nul
6 www.hackxcrack.es 6 www.hackxcrack.es Cuanuo ejecutemos el .bat vamos a vei.
60*+ 7( %'012*( 89)"2
Entienuen. No esta ese mensaje ue "piesione una tecla paia continuai." y sin embaigo espeia a que piesionemos una tecla cualquieia Ahoia comencemos, uigamos que queiemos hacei un piogiama paia ofenuei a alguien. (el soft malicioso no tiene poique sei uaino, ja ja ja). mas o menos va a veise asi
El usuaiio tiene que apietai una tecla (es inuifeiente que tecla sea)
!' $%'0*(0 GH?
I( E$F '0 $(%( $1*'(%&'3
El usuaiio tiene que apietai una tecla (es inuifeiente que tecla sea) y teimina. La solucion est a continuacion. peio intentalo, no es tan uificil.
echo off Echo. Echo Queies sabei que pienso ue vos. Pause Echo. Echo Te ouio. Echo Sabes que mas., apieta una tecla Echo. Pause>nul Echo Te uetesto. peio pensnuolo bien. Echo. Echo Quizs. 7 www.hackxcrack.es 7 www.hackxcrack.es Echo. Echo Quizs. Echo. Echo Apieta la "s" paia sabeilo Pause>nul Echo. Echo Ne piestas $S. Echo. Echo La "p" es paia puteaime. Pause>nul
.-)
Siive paia limpiai la pantalla, en el caso anteiioi, las lineas se agiegaban, con este comanuo las lineas visualizauas hasta el momento uesapaiecen. piobmoslo
echo off Echo Piimeia linea Echo. Pause Cls Echo Segunua linea Echo. Pause
Como van a compiobai piimeio apaiece.
J%"&'% 2K,'(
$%'0"+,' 1,( *')2( $(%( )+,*",1(%3
Cuanuo nosotios piesionemos una tecla nos va a boiiai touo lo esciito y continua con el piogiama
A'L1,=( 2K,'(
$%'0"+,' 1,( *')2( $(%( )+,*",1(%3
/01-!
Ponienuo en nuestio couigo la palabia title seguiuo poi un texto lo que vamos a logiai es que cambie el nombie ue la ventanita, en su uefecto apaiece la iuta uonue se uesaiiolla el batch (concepto que uespus ampliaiemos)
Esta funcion cambia el coloi ue las letias y uel fonuo, la eleccion es hexauecimal (es uecii u,1,2,S,4,S,6,7,8,9,a,b,c,u,e,f) y va ue a paies.
Ejemplo: titulo ue la ventana "hackxciack" con coloi al mejoi estilo Winuows iegistio ue eiioi fatal (letias blancas, fonuo azul)
echo off Title hackxciack Coloi 1f Echo Eiioi fatal Echo. Echo Poi favoi ieinicie su pc Pause>nul
3)4 5
El comanuo "msg *" es paia uejai un mensaje uesue el mostiauoi, una ventanita la cual nos ua las nicas opciones ue aceptai o ceiiai
echo off Nsg * 0nite a hackxciack. unite al conocimiento
Al ejecutailo nos va a apaiecei una ventanita con la misma leyenua, ya que no necesitamos que el piogiama se uetenga no hace falta ingiesai un "pause"
61'21
Ahoia empezamos con uno ue los comanuos mas impoitantes, stait nos va a seivii (poi el momento) paia abiii paginas ue Inteinet, ejecutai piogiamas y abiii aichivos.
Bigamos que queiemos abiii una pagina ue Inteinet, mas piecisamente hackxciack, la oiuen en el .txt seiia
echo off Stait www.hackxciack.es
10 www.hackxcrack.es 10 www.hackxcrack.es 0na vez mas aclaio que como no me inteiesa vei la shell (el cuauiauito negio que apienuimos a cambiai ue coloi) asi que no pongo el pause.
Ahoia un .txt que habi mi navegauoi ue Inteinet
echo off Stait fiiefox.exe
o "iexploiei.exe" uepenuienuo ue cual tengan
Se uan cuenta. Con una simple oiuen pouemos ejecutai un piogiama sin siquieia sabei en que lugai ue la computauoia esta. paia conocei el comanuo ue caua softwaie hay vaiias iecetas, a mi ciiteiio la mas simple es hacei coiiei el piogiama uespus.
Alt+Ctil+Supi! Piocesos
Ahi vamos a vei touo los piocesos con su sintaxis paia ejecutailos con el comanuo stait, es solo cuestion ue localizai cual es
Este inuiviuuo es quien iealiza las funciones ue un piogiama en batch y quien auems peimite que el usuaiio inteiactu con el. sin embaigo nunca viene solo, siempie lo acompaan sus uos amigos "a" y "p", touo esto es algo mas abstiacto, sin embaigo ya a estas altuias no nos vamos a uetenei con una simple montaita
"@+&" significa que a una vaiiable le voy a entiegai ueteiminauo valoi "@+&A5" significa que le voy a peuii al usuaiio que ingiese el valoi ue una vaiiable "@+&A%" significa que voy a hacei clculos con vaiiables
6B-C +, -"% 3%./%$2+9, es una concatenacion ue letias yo uigitos al cual le asigno un valoi. en ciiollo, letias juntas que iepiesentan algo (veiuau que sonaba mas complicauo.), las vaiiables en batch no ueben estai uefiniuas al comenzai el piogiama (algunos piogiamas si lo iequieien), se pueue agiegai una vaiiable uonue lo uesee siempie y cuanuo sea anteiioi al momento ue utilizaila
Bigamos que queiemos que la vaiiable "2'*%(0" valga Q
echo off Set letias=6
Ahoia le vamos no solo a peuii uaile un valoi a una vaiiable, sino que auems vamos a peuiile que nos muestie el valoi ue la misma
echo off Set letias=6 Echo %letias% Pause>nul
Algo cuiioso que tenei en cuenta, es necesaiio paia llamai a la vaiiable enceiiai su nombie entie %, ue lo contiaiio en este caso nos mostiaiia la palabia "letias"
En la pantalla solo vamos a vei
Q
Cuanuo apietemos una tecla se cieiia
6!17&
Ahoia vamos a inteiactuai con el usuaiio piuienuole a el que ingiese el valoi ue una vaiiable, Como lo hacemos., ue la siguiente foima, peio hay que tenei en cuenta el foimato en que esciibimos el set
"@+&A5" nos inuica que la vaiiable va a peuiile al usuaiio su valoi
"3/2" elegiuo al azai poi mi es la vaiiable la cual guaiuaia el uato ingiesauo
"D" significa el final uel nombie ue la vaiiable y el comienzo ue el texto que va a apaiecei en pantalla
EB-+ "*4$.+ +, +2 &-F*9DG es la piegunta o texto que va a leei el usuaiio antes ue ingiesai el uato que pasaia a tomai la vaiiable, el = final es solo paia la peicepcion uel usuaiio, queua mas esttico peio no tiene utiliuau el agiegailo o no
62 R*/* 0'%"( =' '0*( 8+%&(S
echo off Setp vil=Que nombie es el tuyo.= Echo. Echo Tu nombie es %vil%, la veiuau no es naua linuo Pause
Cuanuo lo conviitamos en .bat vamos a vei.
:1' ,+&;%' '0 '2 *17+?T
Y en vez ue continuai (como hasta ahoia lo hacian touos los comanuos), va a ueteneise hasta que intiouuzcamos un uato. el setp como pueuen vei ahoia hace las veces ue pause tambin
Al ingiesai un texto (poi ejemplo "Alan") y apietai entei vamos a vei.
Be la misma foima pouemos peuiile al usuaiio que ingiese valoies paia uistintas vaiiables, el nombie ue estas se lo uamos nosotios a nuestio antojo, peio siempie es mejoi un nombie que se ielacione paia minimizai eiioies
6!17'
Este nuevo amigo nuestio se encaiga ue la aiitmtica (cuentas) cuanuo yo quieio sumai, iestai, multiplicai o uiviuii.
Nota impoitante: batch no tiabaja con uecimales poi lo cual al intentai ingiesai un valoi con uecimales va a ueciinos "Falta el opeiauoi." poi no manuainos a fieii chuiios, a su vez cuanuo el iesultauo ue con uecimales solo se limita a ieuonueai el numeio y uainos un enteio
13 www.hackxcrack.es 13 www.hackxcrack.es La foima ue utilizailo es la siguiente, uigamos que queiemos sumai uos nmeios y mostiailo poi pantalla
El .txt seiia.
echo off Seta suma=S+S Echo %suma% Echo. Pause
Esto nos va a uevolvei poi pantalla al ejecutai el batch
U
$%'0"+,' 1,( *')2( $(%( )+,*",1(%3
Peio esto no es touo y lo giacioso es que nosotios le pouemos peuii al usuaiio ue nuestio batch (combinanuo el "setp" y el "seta") que inseite los uatos a sumai, multiplicai, iestai o uiviuii. hagamos touo juntos asi los confunuo un poco.
.txt
echo off Setp eio=Ingiese el piimei numeio= Cls Setp nuo=Ingiese el segunuo numeio= Cls Seta suma=%eio%+%nuo% Seta iest=%eio%-%nuo% Seta mult=%eio%*%nuo% Seta uivi=%eio%%nuo% Echo los nmeios ingiesauos son %eio% y %nuo% Echo. Echo La suma entie ambos ua %suma% Echo. Echo La iesta uel piimeio poi el segunuo ua %iest% Echo. Echo La multiplicacion ua %mult% Echo. Echo La uivision uel piimeio poi el segunua ua %uivi% Echo. Pause
Lo que veiiamos en la shell seiia
V,L%'0' '2 $%"&'% ,1&'%+T
14 www.hackxcrack.es 14 www.hackxcrack.es Nosotios al ingiesai el piimei numeio y uai entei (supongamos que ingieso el 6u) va a boiiai la piimeia fiase (giacias al cls) y nos va a apaiecei en pantalla
V,L%'0' '2 0'L1,=+ ,1&'%+T
El usuaiio va a elegii un segunuo numeio (en este caso 1u) y al apietai entei el otio cls nos va a boiiai la segunua fiase y vamos a vei.
I+0 ,W&'%+0 ",L%'0(=+0 0+, QX 7 YX
I( 01&( ',*%' (&;+0 =( ZX
I( %'0*( ='2 $%"&'%+ $+% '2 0'L1,=+ =( HX
I( &12*"$2")()"[, =( QXX
I( =">"0"[, ='2 $%"&'%+ $+% '2 0'L1,=+ =( Q
$%'0"+,' 1,( *')2( $(%( )+,*",1(%3
89
Nucha gente se piegunta que hubieia pasauo si., este "if" significa un si conuicional en ingles, una eleccion a tiavs ue uiveisos paimetios, esto esta sonanuo muy complicauo. el if siive paia elegii un camino en caso ue que ocuiia algo. asi queuo bonito
El "if" funciona con su panuilla LSS (menoi H ) uTR (mayoi I ) LEQ (menoi o igual HD ) uEQ (mayoi o igual ID ) EQ0 o == (igual D ) NEQ (uistinto JD )
*En la segunua paite ue caua paintesis estn los opeiauoies usauos en la mayoiia ue lenguajes un poco ms avanzauos, asi ya os van sonanuo.
6784* <-"'/*"%9
Nosotios le vamos a pieguntai si un valoi es igual, menoi, mayoi, etc, y este nos va a iesponuei en uos foima, que el valoi cumpla con el iequisito (coiiecto) o que no lo haga (incoiiecto)
"If (vaiiable, nombie o numeio)(conuicion. ==, >,<)(vaiiable, nombie o numeio) (accion "uiieccion, valoi, etc") else accion (uiieccion, valoi, etc)"
15 www.hackxcrack.es 15 www.hackxcrack.es 0fff!!!, se ve complicauo peio con un ejemplo, algo sencillo (aclaio que el valoi "coiiecto" e "incoiiecto" pueuen llevai el nombie que quieian)
echo off If 1==1 (echo coiiecto) else echo incoiiecto Pause>nul
6,+ +"&/+"0+ 2% ,/"&%K/,9) este ejemplo siempie nos va a mostiai coiiecto ya que siempie 1 va a sei = a 1, si planteaiamos el caso ue que 2 sea igual a 1 nos va a mostiai incoiiecto
Nota Impoitante: a meuiua que vamos avanzanuo no solo vamos a apienuei nuevos comanuos sino que tambin vamos incitai a que inteiacten entie ellos, el siguiente es un buen ejemplo
vamos a iealizai un pequeo juego en el cual nuestio usuaiio va a tenei que auivinai en que numeio estamos pensanuo
echo off Echo Auivina en que numeio estoy pensanuo Setp num=Es mayoi que u y menoi que 1u.= Echo. If %num%==6 (echo uenio. como lo sabias.) else echo No. no auivinaste Echo. Pause
En caso ue esciibii 6 nos va a apaiecei la leyenua
A+0 \',"+3 )+&+ 2+ 0(;"(0?
$%'0"+,' 1,( *')2( $(%( )+,*",1(%3
En caso ue que el numeio sea otio vamos a leei.
N+3 ,+ (=">",(0*'
$%'0"+,' 1,( *')2( $(%( )+,*",1(%3
Pufff! Cuantas cosas vamos apienuienuo, quieio uejai en claio uesue ahoia y antes ue entiai en teiieno mas tuibulento que el limite te lo vas a ponei vos y tu 16 www.hackxcrack.es 16 www.hackxcrack.es imaginacion, muchas cosas se te van a ocuiiii asi como a mi mientias busco el ejemplo mas sencillo paia uejai en claio caua punto.
Continuemos
:$1$
Ahoia comienzan los comanuos, poi asi llamailos, mas peligiosos, en iealiuau aquellos que nos peimiten hacei alguna que otia cosilla peiveisa, el goto es una ue ellas poi una sencilla iazon y es que.
"goto" seiia la tiauuccion liteial ue "ii a", lo que hace este comanuo es enviainos a una paite ueteiminaua uel couigo que estamos cieanuo, la peculiaiiuau uel comanuo es que nos va a enviai al lugai uonue le uemos la oiuen, solo que con uos puntitos antes
uoto aca ! :aca
uificil.... hagamos un piogiamita sencillo
echo off Echo Comenzamos uoto segu :teic Echo Teiceia linea uoto Cuai :segu Echo Segunua linea uoto teic :cuai Echo Cuaita linea Pause 17 www.hackxcrack.es
17 www.hackxcrack.es asi ue simple, hay que tenei bien en cuenta el oiuen y el no abusai (poi nuestia piopia saluu) ue este comanuo, peio auems ahoia vamos a tenei que ingiesai un comanuo ue cieiie, como ya hemos visto el batch sigue la iutina ue aiiiba hacia abajo, a menos que el "goto" nos envie a una nueva uiieccion, sin embaigo a veces es necesaiio que se teimine en cieito punto el piogiama, paia esto (y es una sana costumbie usailo siempie) existe el "exit"