Sunteți pe pagina 1din 20

Tutorial Programacin Batch

You are not allowed to view links. Register or Login


Tutorial Programacin Batch -completo- by You are not allowed to view
links. Register or Login is licensed under a You are not allowed to view
links. Register or Login

Apndice
El apndice est sujeto a modificaciones.

1 Introduccin.
2 Recomendaciones.
3 Cmo empezar?.
4 Comandos Batch.
5 Comandos If y Set.
5.1. - Variables de entorno.
5.2. - Trabajando con variables.
5.3. - Operaciones aritmticas.
5.4. - Criptografa.
5.5. - Polimetra
6 Bucles.
7 Trabajando con archivos.
8 Comando For.

1. Introduccin

Qu es batch?
Citar
En DOS, OS/2 y Microsoft Windows un archivo batch es un archivo de procesamiento por lotes. Se trata
de archivos de texto sin formato, guardados con la extensin BAT que contienen un conjunto de
comandos MS-DOS. Cuando se ejecuta este archivo, (mediante command.com) los comandos
contenidos son ejecutados en grupo, de forma secuencial, permitiendo automatizar diversas tareas.
Cualquier comando MS-DOS puede ser utilizado en un archivo batch.

Batch es un lenguaje (scripting) que se basa en la ejecucin secuencial de diversos


comandos.

2. Recomendaciones

Cmo aprendo Batch?

1. Lee una/varias vez/ces atentamente cada punto (apndice) y ponlo en prtica


programando (por ti mismo y realizando los ejercicios propuestos por m).
2. No avances muy rpidamente: Trabaja cada punto (apndice) hasta alcanzar el
conocimiento ptimo.
3. Nunca te tomes BATCH como otro trabajo ms de clase, si no, como un
entretenimiento ms (aunque requiera concentracin).
4. Nunca te des por vencido al no lograr cualquier cosa. Siempre estamos los usuarios
del foro para ayudarte.

3. Cmo empezar?

Cmo empiezo en Batch?

Necesitamos 2 programas para trabajar en batch: notepad.exe (se


recomienda notepad++) y cmd.exe

Vamos a copiar el siguiente cdigo y a pegarlo en notepad.exe

Cdigo: You are not allowed to view links. Register or Login


@echo of
echo hello world
pause>nul
exit
' Vanse las siguientes imgenes '
Finalmente veremos una ventana negra que nos devuelve hello world. Se habra
cerrado muy rpidamente la ventana, si no hubiramos usado el comando pause (que
veremos ms adelante).

4. Comandos Batch

Qu comandos existen en batch?

Existen los comandos internos y los comandos externos:


Comandos internos. Son los comandos que vienen en el ordenador (comandos por
default).
Comandos externos. Son los comandos que descargamos y guardamos en nuestro
ordenador (en la carpeta system32).

Lista de comandos internos y su funcin


Hay ms comandos internos ocultos
Citar
ASSOC Muestra o modifica las asociaciones de las extensiones de archivos.
AT Planifica comandos y programas para ejecutarse en un equipo.
ATTRIB Muestra o cambia los atributos del archivo.
BREAK Establece o elimina la comprobacin extendida de Ctrl+C.
CALCS Muestra o modifica las listas de control de acceso (ACLs) de archivos.
CALL Llama a un programa por lotes desde otro.
CD Muestra el nombre del directorio actual o cambia a otro directorio.
CHCP Muestra o establece el nmero de pgina de cdigos activa.
CHDIR Muestra el nombre del directorio actual o cambia a otro directorio.
CHKDSK Comprueba un disco y muestra un informe de su estado.
CHKNTFS Muestra o modifica la comprobacin de disco al iniciar.
CLS Borra la pantalla.
CMD Inicia una nueva instancia del intrprete de comandos de Windows
COLOR Establece los colores de primer plano y fondo predeterminados de la
consola.
COMP Compara el contenido de dos archivos o un conjunto de archivos.
COMPACT Muestra o cambia el estado de compresin de archivos en particiones
NTFS.
CONVERT Convierte volmenes FAT a volmenes NTFS. No puede convertir
la unidad actual.
COPY Copia uno o ms archivos a otro lugar.
DATE Muestra o establece la fecha.
DEL Elimina uno o ms archivos.
DIR Muestra una lista de archivos y subdirectorios en un directorio.
DISKCOMP Compara el contenido de dos disquetes.
DISKCOPY Copia el contenido de un disquete en otro.
DOSKEY Edita lneas de comando, memoriza comandos y crea macros.
ECHO Muestra mensajes, o activa y desactiva el eco.
ENDLOCAL Termina la bsqueda de variables de entorno del archivo por lotes.
ERASE Elimina uno o ms archivos.
EXIT Sale del programa CMD.EXE (interfaz de comandos).
FC Compara dos archivos o conjunto de archivos y muestra las diferencias
entre ellos.
FIND Busca una cadena de texto en uno o ms archivos.
FINDSTR Busca cadenas de texto en archivos.
FOR Ejecuta un comando para cada archivo en un conjunto de archivos.
FORMAT Da formato a un disco para usarse con Windows.
FTYPE Muestra o modifica los tipos de archivo utilizados en una asociacin
de archivos.
GOTO Direcciona el intrprete de comandos de Windows a una lnea en
un programa por lotes.
GRAFTABL Permite a Windows mostrar un conjunto de caracteres extendidos
en modo grfico.
HELP Proporciona informacin de ayuda para los comandos de Windows.
IF Ejecuta procesos condicionales en programas por lotes.
LABEL Crea, cambia o elimina la etiqueta del volumen de un disco.
MD Crea un directorio.
MKDIR Crea un directorio.
MODE Configura un dispositivo de sistema.
MORE Muestra la informacin pantalla por pantalla.
MOVE Mueve uno o ms archivos de un directorio a otro en la misma unidad.
PATH Muestra o establece una ruta de bsqueda para archivos ejecutables.
PAUSE Suspende el proceso de un archivo por lotes y muestra un mensaje.
POPD Restaura el valor anterior del directorio actual guardado por PUSHD.
PRINT Imprime un archivo de texto.
PROMPT Cambia el smbolo de comandos de Windows.
PUSHD Guarda el directorio actual y despus lo cambia.
RD Elimina un directorio.
RECOVER Recupera la informacin legible de un disco daado o defectuoso.
REM Graba comentarios en archivos por lotes o CONFIG.SYS.
REN Cambia el nombre de uno o ms archivos.
RENAME Cambia el nombre de uno o ms archivos.
REPLACE Reemplaza archivos.
RMDIR Elimina un directorio.
SET Muestra, establece o elimina variables de entorno de Windows.
SETLOCAL Inicia la localizacin de cambios del entorno en un archivo por lotes.
SHIFT Cambia posicin de modificadores reemplazables en archivos por lotes.
SORT Ordena las entradas.
START Inicia otra ventana para ejecutar un programa o comando.
SUBST Asocia una ruta de acceso con una letra de unidad.
TIME Muestra o establece la hora del sistema.
TITLE Establece el ttulo de la ventana de una sesin de CMD.EXE.
TREE Muestra grficamente la estructura de directorios de una unidad o
ruta de acceso.
TYPE Muestra el contenido de un archivo de texto.
VER Muestra la versin de Windows.
VERIFY Comunica a Windows si debe comprobar que los archivos se escriben
de forma correcta en un disco.
VOL Muestra la etiqueta del volumen y el nmero de serie del disco.
XCOPY Copia archivos y rboles de directorios.

Explicacin de algunos comandos.

Echo
Echo - Echo of / @echo of (Echo activado por default)
Echo: Activa el eco. Muestra la ruta dnde se ejecutan los comandos.
Echo of / @echo of: Desactiva el eco. Oculta la ruta dnde se ejecutan los comandos.

Cls
Borra la pantalla.

Goto
Sirve para dirigirte a una etiqueta*.
Citar
*Una etiqueta es una palabra [seguida de 'dos puntos' ( : )] que identifica un men.

Help
Muestra los comandos de la consola (internos predeterminados).

Pause
El archivo por lotes se para hasta que se presione una tecla para continuar.

Title
Inserta un ttulo al archivo .bat

Comando /?
Los signos /? detrs de un comando, hacen que se muestre la informacin de dicho
comando.

5. Comandos If y Set

Comenzaremos definiendo los comandos If y Set.


IF: "Ejecuta procesos condicionales en programas por lotes." Es decir, Establece
condiciones entre variables.
Set: "Muestra, establece o elimina variables de entorno de Windows." Es decir, que con
el comando set podemos ver, crear o borrar variables en Batch.

*Adems Set, con el modificador /a puede realizar operaciones aritmticas.

Vase el siguiente cdigo


Cdigo: You are not allowed to view links. Register or Login
@echo of
set variable=Batch
set variable2=scripting
echo %variable% es un lenguaje %variable2%
pause>nul
goto eof
El resultado es:
Cdigo: You are not allowed to view links. Register or Login
Batch es un lenguaje scripting
Lo que hacemos con el comando set es identificar una cosa con otra, en este
caso Batch con variable y scripting con variable2

Con el modificador /p, damos la opcin al usuario a que inserte un/os dato/s que se
guardan en una variable.

Vase el siguiente cdigo


Cdigo: You are not allowed to view links. Register or Login
set /p nombre=
set /p edad=
echo Su nombre es %nombre% y su edad es de %edad%
pause>nul
Si el usuario inserta Pedro de nombre y 19 de edad, el resultado ser:

Cdigo: You are not allowed to view links. Register or Login


Su nombre es Pedro y su edad es de 19
Ahora vamos a aplicar condiciones

Vase el siguiente cdigo


Cdigo: You are not allowed to view links. Register or Login
set saludo=hola
if %saludo%==hola echo La variable es igual a hola
if %saludo%==adios echo La variable es igual a adios
pause>nul
1. Creamos una variable ('saludo') que contenga la palabra hola.
2. Damos 2 condiciones. Si la variable 'saludo' es igual a hola, se ejecuta el comando
echo y muestra "La variable es igual a hola", en cambio, si la variable 'saludo' es igual
a adios, se ejecuta el comando echo y muestra "La variable es igual a adios.

*Al principio igualamos la variable 'saludo' a la palabra hola, asique el resultado es:
Cdigo: You are not allowed to view links. Register or Login
La variable es igual a hola
*Si 'saludo' lo hubiramos igualado a adios, el resultado sera as:
Cdigo: You are not allowed to view links. Register or Login
La variable es igual a adios
*Si 'saludo' lo hubiramos igualado a otra cosa diferente, el programa no mostrara
nada porque 'saludo' no se iguala a ninguna de las dos condiciones.

#Parmetros de If

Los siguientes parametros solamente funcionan con


dgitos numricos
Citar
EQU - igual
NEQ - no igual
LSS - menor que
LEQ - menor que o igual
GTR - mayor que
GEQ - mayor que o igual

Vase el siguiente cdigo


Cdigo: You are not allowed to view links. Register or Login
set numero=10
if %numero% EQU 10 (echo El numero es igual a 10)
pause>nul

El resultado es:
Cdigo: You are not allowed to view links. Register or Login
El numero es igual a 10El programa se cerrara si la variable 'numero' no fuera igual a 10.

If exist / If not exist


Vase el siguiente cdigo
Cdigo: You are not allowed to view links. Register or Login
if exist "C:\file.bat" (echo El archivo file.bat existe en la ruta C:\)
Vemos que SI existe el archivo que hemos propuesto, seguidamente nos muestra:
Cdigo: You are not allowed to view links. Register or Login
El archivo file.bat existe en la ruta C:\
De lo contrario...

Vase el siguiente cdigo


Cdigo: You are not allowed to view links. Register or Login
if not exist "C:\file.bat" (echo El archivo file.bat no existe en la ruta C:\)
Resultado:
Cdigo: You are not allowed to view links. Register or Login
El archivo file.bat no existe en la ruta C:\

If y else
Vase el siguiente cdigo
Cdigo: You are not allowed to view links. Register or Login
set var=pasqui
if %var%==Manoel (echo La variable es Manoel) else (echo La variable no es Manoel)
pause>nul
*Como bien vemos, la variable 'var' posee la palabra pasqui, por lo tanto nuestra
condicin propone que si la variable 'var' es igual a Manoel muestra:
Cdigo: You are not allowed to view links. Register or Login
La variable es Manoel
y si la variable no es Manoel, muestra:
Cdigo: You are not allowed to view links. Register or Login
La variable no es Manoel
Por lo tanto, podemos decir del parmetro else, que significa " SI NO ". El comando
que va despus de esle, se ejecuta siempre que la condicin propuesta sea errnea.

Comprobacin de variable: if + set


Vase el siguiente cdigo
Cdigo: You are not allowed to view links. Register or Login
set /p variable=
if [%variable%]==[] (echo usted no ha ingresando nada en la variable) else (echo usted si ha
ingresado algo en la variable)
pause>nul
*Con los corchetes comprobamos si el usuario a insertado algn dato en la variable
'variable'.
*Podemos utilizar cualquier smbolo, letra o nmero para comprobar esto.

Vase el siguiente cdigo


Cdigo: You are not allowed to view links. Register or Login
set /p variable=
if a%variable%a==aa (echo usted no ha ingresando nada en la variable) else (echo usted si ha
ingresado algo en la variable)
pause>nul*Con la letra a antes y despus de la variable '%variable%' tambin surtira
efecto.

If %errorlevel%
Citar
"Cada orden externa de ms-dos genera un cdigo de salida a su trmino indicando si pudo realizarse
satisfactoriamente.
Generalmente un cdigo de salida 0 indica que no hubo ningn problema y un cdigo de salida
superior hace referencia a diferentes errores.
Muchos ficheros por lotes necesitan saber si la orden anterior cumpli su cometido correctamente:
para ello utilizan la orden If errorlevel.
Es muy importante recordar que la orden se ejecutar si el cdigo de salida es igual o superior al
especificado detrs de ERRORLEVEL.

A modo de ejemplo tenemos a continuacin los cdigos de salida de Xcopy:


0 Los ficheros fueron copiados sin error.
1 No se encontraron ficheros para copiar.
2 El usuario presion Ctrl+Pausa para suspender el proceso de Xcopy.
3 Ocurri un error de inicio. No hay suficiente memoria o espacio en el disco, se introdujo un nombre
de unidad no vlida o se utiliz una sintaxis incorrecta en la lnea de rdenes.
4 Ocurri un error de escritura de disco."

Vase el siguiente cdigo


Cdigo: You are not allowed to view links. Register or Login
Xcopy "C:\file.txt" "C:\archivos de programa\file.txt"
if errorlevel 0 echo Los ficheros fueron copiados sin error.
if errorlevel 1 echo No se encontraron ficheros para copiar.
if errorlevel 2 echo El usuario presion Ctrl+Pausa para suspender el proceso de Xcopy.
if errorlevel 3 echo Ocurri un error de inicio. No hay suficiente memoria o espacio en el disco, se
introdujo un nombre de unidad no vlida o se utiliz una sintaxis incorrecta en la lnea de rdenes.
if errorlevel 4 echo Ocurri un error de escritura de disco.
pause>nul*Dependiendo la salida del comando, sale un mensaje u otro.

5.1. Variables de entorno

Las variables de entorno disponibles son las siguientes:

Citar
HOMEDRIVE=Disco local (habitualmente C:)
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=%homedrive%\Documents and Settings\Usuario\Datos de programa
CLIENTNAME=Console
CommonProgramFiles=%homedrive%\Archivos de programa\Archivos comunes
COMPUTERNAME=USUARIO-CB9E372C
ComSpec=%homedrive%\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEPATH=\Documents and Settings\Usuario
LOGONSERVER=\\USUARIO-CB9E372C
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=%homedrive%\ruby\bin;%homedrive%\WINDOWS\system32;%homedrive%\WINDOWS;
%homedrive%\WINDOWS\System32\Wbem;%homedrive%\Arch
ivos de programa\Archivos comunes\Adobe\AGL
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.RB;.RBW
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 7, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0407
ProgramFiles=%homedrive%\Archivos de programa
PROMPT=$P$G
RUBYOPT=-rubygems
SESSIONNAME=Console
TEMP=C:\DOCUME~1\Usuario\CONFIG~1\Temp
TMP=C:\DOCUME~1\Usuario\CONFIG~1\Temp
USERDOMAIN=USUARIO-CB9E372C
USERNAME=Usuario
USERPROFILE=%homedrive%\Documents and Settings\Usuario
windir=%homedrive%\WINDOWS
Otras variables que tambin podemos utilizar son %time% y %random%... por ejemplo

Vamos a definir estas variables:


%time%: Muestra la hora almacenada en la bios
%random%: Muestra un nmero al azar.

Vase el siguiente cdigo


Cdigo: You are not allowed to view links. Register or Login
set tiempo=%time%
echo %time%
set numero=%random%
echo %numero%
pause>nul
*Se mostrarn la hora y el nmero al azar, secuencialmente.

5.2. Trabajando con variables.

Sustitucin de carcteres.

Vase el siguiente cdigo


Cdigo: You are not allowed to view links. Register or Login
set var=Manoel
set sustituir=%var:o=u%
echo %sustituir%
pause>nul*Esto es sencillo. Como vemos he sustituido el carcter o por otro carcter u.

Vase el siguiente cdigo


Cdigo: You are not allowed to view links. Register or Login
set var=Manuel tiene 12 pelotas
set var=%var:12=39%
echo %var%
pause>nul*En este cdigo se ve que modifiqu el nmerode pelotas que tena Manuel.

Extraer carcteres de una variable.

*Para realizar la extracin de carcteres debemos realizar esto:

Citar
%var:~a,b%
donde:

var: La variable a la que vayamos a extraerle carcteres.


a: posicin donde empezamos a extraer carcteres
b: cantidad de carcteres a extraer.

Ejemplo:
Vase el siguiente cdigo
Cdigo: You are not allowed to view links. Register or Login
set var=12/11/2010
echo %var:~3,2%
pause>nul
El echo nos mostrar los 2(b) carcteres despus del 3(a) carcter, por lo tanto, el
echo nos mostrar el mes de la fecha guardada en la variable var.

5.3. Operaciones aritmticas.

Lo primero que debo decir, que BATCH NO TRABAJA CON DECIMALES.

Vase el siguiente cdigo


Cdigo: You are not allowed to view links. Register or Login
Set /a
set /a var=5+3
echo %var%
pause>nul*Echo nos muestra 8, que es la suma de 5+3

-Las operaciones bsicas disponibles son:


Citar
+ Sumar
- Restar
/ Dividir
* Multiplicar
^ Elevar a un exponente

5.4. Criptografa.

Primero vamos a definir el trmino criptografa.


Citar
Wikipedia dice: La criptografa (del griego krypto, oculto, y graphos, escribir,
literalmente escritura oculta) es el arte o ciencia de cifrar y descifrar informacin mediante tcnicas
especiales y se emplea frecuentemente para permitir un intercambio de mensajes que slo puedan ser
ledos por personas a las que van dirigidos y que poseen los medios para descifrarlos.

Cuando nosotros instertamos un valor en una variable (obviamente con set) lo que
estamos haciendo es asignar un nombre (la variable) a un valor.

Cdigo: You are not allowed to view links. Register or Login


set variable=valor
Como podemos apreciar, nosotros "escondemos" 'valor' dentro de otro texto llamado
"variable". Bien pues este es nuestro punto de partida. Veamos un simple cdigo el
cual nos pida una contrasea para acceder al archivo.

Cdigo: You are not allowed to view links. Register or Login


set pass=Introduzca el password:
if %pass%==texto (echo correcto) else (echo incorrecto)
Como vemos, cualquier persona iniciada en batch sabra cual era la contrasea
(obviamente, texto). Con lo cual vamos a utilizar 3 mtodos para encriptar texto.

Los mtodos que vamos a utilizar son: Extraccin de carcteres, sustitucin de


carcteres y parmetros.
(Los mtodos de sustitucin y extraccin de carcteres los hemos visto en el apartado 5.2.)

Prametros

El signo % seguido de un nmero (del 1 al 9) son las parmetros que se pasan al llamar
a un archivo bat o a una etiqueta con el comando call. Por ejemplo si tenemos un
archivo llamado help.bat con la lnea
Cdigo: You are not allowed to view links. Register or Login
echo Hola %1Si lo llamamos tecleando en la Consola de Windows "help.bat pyxolo" se
mostrar en la pantalla "Hola pyxolo".
%0 representa el nombre del archivo bat en ejecucin y %# representa todos los
parmetros que se le pasan.
(# perteneciente al intervalo [1-9])

Clarifiquemos esta teora con un ejemplo:


Cdigo: You are not allowed to view links. Register or Login
@echo of
call :function Aprender batch es una tarea gratificante
:function
echo %3 %4 %5 %6 %1 %2
Con call :function llamamos a la etiqueta :function. En la etiqueta :function vemos que
se imprimen unos parmetros, pero como podemos observar el primer parmetro es el
3, luego el 4... ms tarde el 1, luego el 2...

Como vemos nosotros decidimos que parmetros pasar antes o despus.

Cdigo: You are not allowed to view links. Register or Login


@echo of
call :function Aprender batch es una tarea gratificante
:function
echo %3 %4 %5 %6 %1 %2
El cdigo nos muestra:
Citar
es una tarea gratificante Aprender batch

Ya con estos tres mtodos en mente nos disponemos a estudiar algunos cdigos que os
propongo:

Cdigo #1
Cdigo: You are not allowed to view links. Register or Login
@echo of
set var=hola
set var=%var:o=0%
set var=%var:a=4%
set /p enter=Password:
if %enter%==%var% (echo correcto) else (echo incorrecto)(utilizamos el mtodo de sustitucin
de carcteres para la encriptacin. Password = h0l4)

Cdigo #2
Cdigo: You are not allowed to view links. Register or Login
@echo of
set var=hola
set var=%var:o=0%
set var=%var:a=4%
set /p enter=Password:
if %enter%==%var:~0,2%%var:~-1% (echo correcto) else (echo incorrecto) (Ahora lo complicamos
un poquito ms utilizando la extraccin de carcteres. Password = h04)

Cdigo #3
Cdigo: You are not allowed to view links. Register or Login
@echo of
set conv=set function
set pyxolo=pyxolo
set /p pass="Password: "
call :method %pyxolo%
if "%pass%"=="%function%" (echo correcto) else (echo incorrecto)
pause>nul
exit
:method
%conv%=%1
%conv%=%function:y=1%
%conv%=%function:o=0%(Ahora hemos utilizado el mtodo de sustitucin de carcteres y
hemos utilizado un parmetro. Password = p1x0l0)

Pues con estos tres mtodos y alguno ms podremos crear un 'crypter', hacer
crackme's... Todo depende de nuestra mente :P

5.5. Polimetra.
La polimetra, en batch, es la combinacin de dos o ms variables entre si. Veamos un
simple ejemplo (el mo por excelencia)

Cdigo: You are not allowed to view links. Register or Login


setlocal enabledelayedexpansion
set "function=variable"
set /p n=Indique el numero de carcteres a extraer:
set function=!function:~1,%n%!
echo %function%

Como podemos observar, he metido una variable (%n%) dentro de otra variable
(%function%). En este caso la he utilizado para extraer un cierto nmero de carcteres
definidos por el usuario. He utilizado el comando Setlocal + valor de
enabledelayedexpansion para mandarle a mi archivo .bat que habilite la expansin de
variables. Asique cmo podemos ver, la polimetra consiste en insertar una variable
dentro de otra. Esto puede sernos realmente til a la hora de programar!

Veamos otro ejemplo para afianzar conocimientos:


Cdigo: You are not allowed to view links. Register or Login
@echo of
setlocal enabledelayedexpansion
set "function=pyxolo"
for /l %%a in (1,1,6) do (
echo !function:~0,%%a!
)
pause>nul
En pantalla se imprimira:
Citar
p
py
pyx
pyxo
pyxol
pyxolo

6. Bucles.
Los bucles, en batch, son trozos de cdigos que se repiten a lo largo de la ejecucin
del archivo batch.
Cmo se hacen los bucles?
Cdigo: You are not allowed to view links. Register or Login
:etiqueta
echo hola, esto es un bucle infinito
goto etiqueta(Como vemos se muestra hola, esto es un bucle infinito indefinidamente)

Bucles infinitos: Son bucles que se ejecutan indefinidamente


Bucles finitos: Son bucles con un cierto nmero de ejecuciones que las podemos
delimitar a nuestra necesidad.

Veamos un ejemplo de bucle finito:


Cdigo: You are not allowed to view links. Register or Login
@echo of
set /a cuenta=0
:bucle
set /a cuenta=%cuenta%+1
echo pyxolo
if %cuenta%==10 (exit) else (goto :bucle)Como vemos ejecutar 10 veces 'echo' imprimendo
en pantalla:
Citar
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
y luego se cerrar.
Ahora est todo en vuestras manos y vuestra mente!
7. Trabajando con archivos.
Estos son los comandos principales para el manejo de archivos y directorios:
Citar
ASSOC Muestra o modifica las asociaciones de las extensiones de archivos.
ATTRIB Muestra o cambia los atributos del archivo.
CACLS Muestra o modifica las listas de control de acceso (ACLs) de archivos.
CALL Llama a un programa por lotes desde otro.
CD Muestra el nombre del directorio actual o cambia a otro directorio.
COMP Compara el contenido de dos archivos o un conjunto de archivos.
DEL Elimina uno o ms archivos.
DIR Muestra una lista de archivos y subdirectorios en un directorio.
FC Compara dos archivos o conjunto de archivos y muestra las diferencias entre ellos.
FIND Busca una cadena de texto en uno o ms archivos.
FSUTIL Muestra o configura las propiedades de sistema de archivos.
FTYPE Muestra o modifica los tipos de archivo usados en una asociacin de extensin de archivo.
ICACLS Muestra, modifica, hace copias de seguridad o restaura listas de control de acceso (ACL)
para archivos y directorios.
MD Crea un directorio.
MOVE Mueve uno o ms archivos de un directorio a otro en la misma unidad.
OPENFILES Muestra archivos compartidos abiertos por usuarios remotos.
PATH Muestra o establece una ruta de bsqueda para archivos ejecutables.
POPD Restaura el valor anterior del directorio actual guardado por PUSHD.
PRINT Imprime un archivo de texto.
PUSHD Guarda el directorio actual y despus lo cambia.
RD Quita un directorio.
REN Cambia el nombre de uno o ms archivos.
REPLACE Reemplaza archivos.
ROBOCOPY Utilidad avanzada para copiar rboles de archivos y directorios
START Inicia otra ventana para ejecutar un programa o comando.
TREE Muestra grficamente la estructura de directorios de una unidad o ruta de acceso.
TYPE Muestra el contenido de un archivo de texto.
VERIFY Comunica a Windows si debe comprobar que los archivos se escriben de forma correcta en
un disco.
XCOPY Copia archivos y rboles de directorios.

Estudiemos los ms importantes!


CD
Cdigo: You are not allowed to view links. Register or Login
cd directorioCon el comando cd nos movemos entre directorios.
Cdigo: You are not allowed to view links. Register or Login
cd "%homepath%\desktop"Nos situamos en el escritorio.

MD
Cdigo: You are not allowed to view links. Register or Login
md directorioCrea un directorio
Cdigo: You are not allowed to view links. Register or Login
cd carpetaCrea el directorio/carpeta 'carpeta' en el directorio actual

PUSHD
Cdigo: You are not allowed to view links. Register or Login
pushd directorioLo mismo que con cd pero con pushd guarda el directorio actual y as nos
da la posibilidad de utilizar POPD para volver al directorio guardado.
Cdigo: You are not allowed to view links. Register or Login
pushd directorio
popdPrimero nos moveramos al directorio 'directorio' y luego con popd volveramos al
directorio inicial.

DEL
Cdigo: You are not allowed to view links. Register or Login
del /parmetros "rutadelarchivo"Con del podemos borrar archivos y utilizando los
parmetros decidiremos como lo/s borraremos
Cdigo: You are not allowed to view links. Register or Login
del /f /q /s "%homepath%\desktop\file.exe"Con el parmetro /f forzamos la eliminacin de
archivos de slo lectura. Con el parmetro /q lo hacemos de manera silenciosa, es
decir, no pide confirmacin si utilizamos * (comodn global) para borrar todos los
archivos de un directorio). Y, por ltimo, con el parmetro /s eliminamos todos los
archivos especificados de subdirectorios.

Cdigo: You are not allowed to view links. Register or Login


del /f /q /s "%homepath%\desktop\pyxolo\*.txt" Borra todos los archivos .txt del directorio
"%homepath%\desktop\pyxolo" y subdirectorios sin pedir confirmacin. Si utilizamos
tambin * (comodn global) en la extensin, entonces borraremos todos los archivos de
dicho directorio
Cdigo: You are not allowed to view links. Register or Login
del /f /q /s "%homepath%\desktop\pyxolo\*.*"
ATTRIB
Cdigo: You are not allowed to view links. Register or Login
attrib +-parmetro archivo"Con attrib establecemos o quitamos atributos a archivos.
Cdigo: You are not allowed to view links. Register or Login
attrib +h "%homepath%\desktop\pyxolo\*.txt" Con este cdigo establecemos el atributo de
oculto a todos los archivos .txt del directorio "%homepath%\desktop\pyxolo"
Cdigo: You are not allowed to view links. Register or Login
attrib -h "%homepath%\desktop\pyxolo\*.txt"Con este cdigo quitamos el atributo de oculto a
todos los archivos .txt del directorio "%homepath%\desktop\pyxolo"

REN
Cdigo: You are not allowed to view links. Register or Login
ren "archivo_a_renombrar" "archivo_nombradoCon ren podemos renombrar archivos.
Cdigo: You are not allowed to view links. Register or Login
ren "%windir%\file.bat" "%windir%\pyxolo.bat
XCOPY
Cdigo: You are not allowed to view links. Register or Login
XCOPY origen destinoCon XCOPY podemos copiar archivos de un directorio a otro y, a su
vez, renombrarlos.
Cdigo: You are not allowed to view links. Register or Login
XCOPY "archivo.txt" "%programfiles%\ayuda.txt"

8. Comando FOR.

Definicin del comando for:

"Ejecuta el comando para cada uno de los archivos especificados en el


conjunto de archivos."

Sintaxis del comando (FOR) :

Cdigo: You are not allowed to view links. Register or Login


FOR %%var IN (conjunto) DO (acciones)
La sintaxis es algo compleja pero muy eficaz.Analicmosla:

%%var=nombre de la variable...siempre tiene que estar precedido de dos %%


'porcentajes' (ejemplo: %%3 %%num)
IN=Incluye al conjunto
(conjunto)=archivos o dgitos con los que queremos trabajar
DO=ejecuta las (acciones)
(acciones)=Un comando con el ke keremos ejecutar todo el conjunto.El comando puede
llevar sus variantes (ejemplo: ...DO (echo %%var, ...DO del /f /q %%var...)

Ejemplo:
Cdigo: You are not allowed to view links. Register or Login
FOR %%x IN (archivo1.txt archivo2.exe archivo3.ini) DO del /f /q %%x
Lo que haramos en esta lnea sera lo siguiente

En el conjunto cogemos a archivo1.txt, a archivo2.exe y a archivo3.ini. Para llamar


al conjunto entero usaremos la variable %%a. Luego con el comando del /f /q (%%a)
borramos cada parte del conjunto que contiene la variable %%a

Cdigo: You are not allowed to view links. Register or Login


FOR %%var IN (d*) DO echo %%var
Lo que hacemos con el for es que nos muestre todos los archivos que comiencen por la
letra "d" en el directorio predeterminado o el especificado por cd\push o popd

El modificador /L :

Cdigo: You are not allowed to view links. Register or Login


For /L %%x in (1,3,30) Do echo %%x

El conjunto es una sucesin de nmeros que va desde inicio hasta fin y que
aumenta (o disminuye) en funcin de lo especificado en el paso. As (0, 2, 10) generar
la sucesin 0 2 4 6 8 10 y (10, -1, 5) generar la sucesin 10 9 8 7 6 5
El modificador /D :

Cdigo: You are not allowed to view links. Register or Login


FOR /D %%dirx in (m*) DO echo %%dirx
El modificador /D sirve para mostrar directorios... En la lnea del anterior for nos
muestra todos los directorios que comiencen por la letra "m".

Otro modificador /F (ms complejo)

# El conjunto puede contener

Conjunto de archivos > sin comillas


Cadena de caracteres > con comillas dobles [ " " ]
Comando > con comilla simple [ ' ' ]

OPCIONES

Citar
eol -> Todo lo que est despues de ste carcter (especificado con eol) ser ignorado (para cada
linea)

skip -> Es el nmero de lneas a saltarse al principio de un archivo o comando.

delims -> Delims nos sirver para separar strings, si no se coloca esta opcin, se usarn como
separadores "espacio" y "tab"

tokens -> Con tokens especificamos qu segmentos, delimitados por "delims", sern pasados a las
variables... por ejemplo:

1, 2, 3
Solo pasar los primeros 3 segmentos.

1,2*
Pasa 2 segmentos, el primero y todo lo que este despues (el * regresa todo el resto de la linea)

1,2,3-7.8.9-14,16*
Pasar los tres primeros segmentos, luego saltar al sptimo, seguir has el noveno. Luego saltar al
14, salta al dieciseis hasta que se acaben los segmentos.

usebackq ->Cambia la forma de interpretar si es string o comando

Ejemplo:
Cdigo: You are not allowed to view links. Register or Login
FOR /F "tokens=1,2-4,8,9,10*" %%a IN ("RockoX quiere tontear correr y solo quiere salvarse de la
muerte que le ofrece satan") DO echo %%a %%b %%d %%e %%f %%g %%h
Esta linea dar como resultado lo siguiente:

RockoX quiere correr salvarse de la muerte que le ofrece satn

Algunos scripts de ejemplo

Saber las lneas de un archivo


Cdigo: You are not allowed to view links. Register or Login
::Saber las lneas de un archivo by PyXOLo
@echo of
:contador
set /p archivo=RUTA=
set cuenta=0
for /f %%x in (%archivo%) do set /a cuenta=1+cuenta
set funcion=%cuenta%
echo %funcion%
pause>nul
Extraer la IP privada de tu computadora en una variable
Cdigo: You are not allowed to view links. Register or Login
::Extraer la IP privada de tu computadora en una variable por PyXOLo
@echo of
For /f "tokens=14 skip=5" %%x IN ('ipconfig') Do set ip=%%x
echo %ip%
pause>nul
goto EOF
Sacar la ruta de un proceso (by RockoX)
Cdigo: You are not allowed to view links. Register or Login
@echo of
rem Sacando la ruta de un ejecutable activo.
(cd %homedrive%\)
:Code
(cls)
(set /p proceso=Nombre de proceso : )
(if not defined proceso (goto:Code))
for /f "tokens=*" %%x in ('wmic process get executablepath ^| find /i "%proceso%"') do (set ruta=%
%x)
(echo %ruta%)
(pause>nul)
(goto:eof)

Bueno esto ha sido todo, espero que les haya gustado y, sobre todo, que hayan
aprendido mucho.

S-ar putea să vă placă și