ENTRAR EN EL FOROHACK ANTIGUO (Muchos temas viejos y de menor nivel)
12:47:30 02/12/2020
¿No estas registrado?
Login: Clave:
6 Usuarios en línea: 0 registrados, 6 invitados.
Conéctate y verás los usuarios en línea
Tema: Tutorial Programación Batch -completo- 3 votos3 votos3 votos3 votos3 votos
    Responder
Todos Los Foros -> Batch -> Tutorial Programación Batch -completo-
Autor Mensaje (Ver Versión para Imprimir)
pyxolo
Usuario espontáneo
Sin Imagen

Mensajes: 2
Registrad@:
04/07/2010
Estado: Desconectad@
Ver último Post
Tutorial Programación Batch -completo-

Tutorial Programación Batch


Tutorial Programación Batch - Completo - by pyxolo is licensed under a Creative Commons
Attribution-NonCommercial-ShareAlike 3.0 Unported License


·Apéndice
El apéndice está sujeto a modificaciones.

1 · Introducción.
2 · Recomendaciones.
3 · ¿Cómo empezar?.
4 · Comandos Batch.
5 · Comandos If   y Set.
   5.1. - Variables de entorno.
   5.2. - Trabajando con variables.
   5.3. - Operaciones aritméticas.
   5.4. - Criptografía.
   5.5. - Polimetría
6 · Bucles.
7 · Trabajando con archivos.
8 · Comando For.




1. Introducción

·¿Qué es batch?
CITA
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 extensión 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 ejecución secuencial de diversos comandos.








2. Recomendaciones

·¿Cómo aprendo Batch?

1. Lee una/varias vez/ces atentamente cada punto (apéndice) y ponlo en prática programando (por ti mismo y realizando los ejercicios propuestos por mí).
2. No avances muy rápidamente: Trabaja cada punto (apéndice) hasta alcanzar el conocimiento óptimo.
3. Nunca te tomes BATCH como otro trabajo más de clase, si no, como un entretenimiento más (aunque requiera concentración).
4. Nunca te des por vencido al no lograr cualquier cosa. Siempre estamos los usuarios del foro para ayudarte.








3. ¿Cómo empezar?

·¿Cómo empiezo en Batch?

·Necesitamos 2 programas para trabajar en batch: notepad.exe (se recomienda notepad++) y cmd.exe

·Vamos a copiar el siguiente código y a pegarlo en notepad.exe

CÓDIGO

@echo off
echo hello world
pause>nul
exit


' Véanse las siguientes imágenes '





· Finalmente veremos una ventana negra que nos devuelve hello world. Se abría cerrado muy rápidamente la ventana, si no hubiéramos usado el comando pause (que veremos más 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 función
Hay más comandos internos ocultos
CITA

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 comprobación 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 número de página de códigos 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 comprobación de disco al iniciar.
CLS         Borra la pantalla.
CMD         Inicia una nueva instancia del intérprete 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 compresión de archivos en particiones
             NTFS.
CONVERT   Convierte volúmenes FAT a volúmenes NTFS. No puede convertir
             la unidad actual.
COPY       Copia uno o más archivos a otro lugar.
DATE       Muestra o establece la fecha.
DEL         Elimina uno o más 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 líneas de comando, memoriza comandos y crea macros.
ECHO       Muestra mensajes, o activa y desactiva el eco.
ENDLOCAL Termina la búsqueda de variables de entorno del archivo por lotes.
ERASE      Elimina uno o más 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 más 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 asociación
             de archivos.
GOTO       Direcciona el intérprete de comandos de Windows a una línea en
             un programa por lotes.
GRAFTABL Permite a Windows mostrar un conjunto de caracteres extendidos
             en modo gráfico.
HELP       Proporciona información 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 información pantalla por pantalla.
MOVE       Mueve uno o más archivos de un directorio a otro en la misma unidad.
PATH       Muestra o establece una ruta de búsqueda 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 símbolo de comandos de Windows.
PUSHD      Guarda el directorio actual y después lo cambia.
RD          Elimina un directorio.
RECOVER   Recupera la información legible de un disco dañado o defectuoso.
REM         Graba comentarios en archivos por lotes o CONFIG.SYS.
REN         Cambia el nombre de uno o más archivos.
RENAME    Cambia el nombre de uno o más archivos.
REPLACE   Reemplaza archivos.
RMDIR      Elimina un directorio.
SET         Muestra, establece o elimina variables de entorno de Windows.
SETLOCAL Inicia la localización de cambios del entorno en un archivo por lotes.
SHIFT      Cambia posición 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 título de la ventana de una sesión de CMD.EXE.
TREE       Muestra gráficamente la estructura de directorios de una unidad o
             ruta de acceso.
TYPE       Muestra el contenido de un archivo de texto.
VER         Muestra la versión 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 número de serie del disco.
XCOPY      Copia archivos y árboles de directorios.



Explicación de algunos comandos.

Echo
·Echo - Echo off / @echo off (Echo activado por default)
Echo: Activa el eco. Muestra la ruta dónde se ejecutan los comandos.
Echo off / @echo off: Desactiva el eco. Oculta la ruta dónde se ejecutan los comandos.

Cls
Borra la pantalla.

Goto
Sirve para dirigirte a una etiqueta*.
CITA
*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 título al archivo .bat

Comando /?
Los signos /? detrás de un comando, hacen que se muestre la información 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.

*Además Set, con el modificador /a puede realizar operaciones aritméticas.

Véase el siguiente código
CÓDIGO
@echo off
set variable=Batch
set variable2=scripting
echo %variable% es un lenguaje %variable2%
pause>nul
goto eof


El resultado es:
CÓDIGO
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 opción al usuario a que inserte un/os dato/s que se guardan en una variable.

Véase el siguiente código
CÓDIGO

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á:

CÓDIGO
Su nombre es Pedro y su edad es de 19


·Ahora vamos a aplicar condiciones

Véase el siguiente código
CÓDIGO

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:
CÓDIGO
La variable es igual a hola


*Si 'saludo' lo hubiéramos igualado a adios, el resultado sería así:
CÓDIGO
La variable es igual a adios


*Si 'saludo' lo hubiéramos igualado a otra cosa diferente, el programa no mostraría nada porque 'saludo' no se iguala a ninguna de las dos condiciones.

#Parámetros de If

Los siguientes parametros solamente funcionan con dígitos numéricos
CITA

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


Véase el siguiente código
CÓDIGO

set numero=10
if %numero% EQU 10 (echo El numero es igual a 10)
pause>nul


El resultado es:
CÓDIGO
El numero es igual a 10

El programa se cerraría si la variable 'numero' no fuera igual a 10.

If exist / If not exist

Véase el siguiente código
CÓDIGO
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:
CÓDIGO
El archivo file.bat existe en la ruta C:\


De lo contrario...

Véase el siguiente código
CÓDIGO
if not exist "C:\file.bat" (echo El archivo file.bat no existe en la ruta C:\)


Resultado:
CÓDIGO
El archivo file.bat no existe en la ruta C:\


If y else

Véase el siguiente código
CÓDIGO

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 condición propone que si la variable 'var' es igual a Manoel muestra:
CÓDIGO
La variable es Manoel


y si la variable no es Manoel, muestra:
CÓDIGO
La variable no es Manoel


· Por lo tanto, podemos decir del parámetro else, que significa " SI NO ". El comando que va después de esle, se ejecuta siempre que la condición propuesta sea errónea.


Comprobación de variable: if + set

Véase el siguiente código
CÓDIGO
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 algún dato en la variable 'variable'.
*Podemos utilizar cualquier símbolo, letra o número para comprobar esto.

Véase el siguiente código
CÓDIGO
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 después de la variable '%variable%' también surtiría efecto.


If %errorlevel%

CITA
"Cada orden externa de ms-dos genera un código de salida a su término indicando si pudo realizarse satisfactoriamente.
Generalmente un código de salida 0 indica que no hubo ningún problema y un código 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 código de salida es igual o superior al especificado detrás de ERRORLEVEL.

A modo de ejemplo tenemos a continuación los códigos 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 válida o se utilizó una sintaxis incorrecta en la línea de órdenes.
4 Ocurrió un error de escritura de disco."


Véase el siguiente código
CÓDIGO

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 válida o se utilizó una sintaxis incorrecta en la línea 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:

CITA
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 también podemos utilizar son %time% y %random%... por ejemplo

·Vamos a definir estas variables:
%time%: Muestra la hora almacenada en la bios
%random%: Muestra un número al azar.

Véase el siguiente código
CÓDIGO
set tiempo=%time%
echo %time%
set numero=%random%
echo %numero%
pause>nul

*Se mostrarán la hora y el número al azar, secuencialmente.







5.2. Trabajando con variables.

·Sustitución de carácteres.

Véase el siguiente código
CÓDIGO
set var=Manoel
set sustituir=%var:o=u%
echo %sustituir%
pause>nul

*Esto es sencillo. Como vemos he sustituido el carácter o por otro carácter u.

Véase el siguiente código
CÓDIGO
set var=Manuel tiene 12 pelotas
set var=%var:12=39%
echo %var%
pause>nul

*En este código se ve que modifiqué el númerode pelotas que tenía Manuel.

·Extraer carácteres de una variable.

*Para realizar la extración de carácteres debemos realizar esto:

CITA
%var:~a,b%

donde:

var: La variable a la que vayamos a extraerle carácteres.
a: posición donde empezamos a extraer carácteres
b: cantidad de carácteres a extraer.

Ejemplo:
Véase el siguiente código
CÓDIGO
set var=12/11/2010
echo %var:~3,2%
pause>nul


El echo nos mostrará los 2(b) carácteres después del 3(a) carácter, por lo tanto, el echo nos mostrará el mes de la fecha guardada en la variable var.







5.3. Operaciones aritméticas.

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

Véase el siguiente código
CÓDIGO
Set /a
set /a var=5+3
echo %var%
pause>nul

*Echo nos muestra 8, que es la suma de 5+3

-Las operaciones básicas disponibles son:
CITA

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








5.4. Criptografía.

Primero vamos a definir el término criptografía.
CITA
Wikipedia dice: La criptografía (del griego   ???pt? krypto, «oculto», y ???f? graphos, «escribir», literalmente «escritura oculta») es el arte o ciencia de cifrar y descifrar información   mediante técnicas especiales y se emplea frecuentemente para permitir un intercambio de mensajes que sólo puedan ser leídos 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.

CÓDIGO
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 código el cual nos pida una contraseña para acceder al archivo.

CÓDIGO

set pass=Introduzca el password:
if %pass%==texto (echo correcto) else (echo incorrecto)


Como vemos, cualquier persona iniciada en batch sabría cual era la contraseña (obviamente, texto). Con lo cual vamos a utilizar 3 métodos para encriptar texto.

Los métodos que vamos a utilizar son: Extracción de carácteres, sustitución de carácteres y parámetros.
(Los métodos de sustitución y extracción de carácteres los hemos visto en el apartado 5.2.)

·Párametros

El signo % seguido de un número (del 1 al 9) son las parámetros 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 línea
CÓDIGO
echo Hola %1
Si 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 ejecución y %# representa todos los parámetros que se le pasan.
(# perteneciente al intervalo [1-9>)

Clarifiquemos esta teoría con un ejemplo:
CÓDIGO
@echo off
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 parámetros, pero como podemos observar el primer parámetro es el 3, luego el 4... más tarde el 1, luego el 2...

Como vemos nosotros decidimos que parámetros pasar antes o después.

CÓDIGO
@echo off
call :function Aprender batch es una tarea gratificante
:function
echo %3 %4 %5 %6 %1 %2


El código nos muestra:
CITA
es una tarea gratificante Aprender batch


Ya con estos tres métodos en mente nos disponemos a estudiar algunos códigos que os propongo:

Código #1
CÓDIGO
@echo off
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 método de sustitución de carácteres para la encriptación. Password = h0l4)


Código #2
CÓDIGO
@echo off
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 más utilizando la extracción de carácteres. Password = h04)

Código #3
CÓDIGO

@echo off
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 método de sustitución de carácteres y hemos utilizado un parámetro. Password = p1x0l0)

Pues con estos tres métodos y alguno más podremos crear un 'crypter', hacer crackme's... Todo depende de nuestra mente :P







5.5. Polimetría.
· La polimetría, en batch, es la combinación de dos o más variables entre si. Veamos un simple ejemplo (el mío por excelencia)

CÓDIGO

setlocal enabledelayedexpansion
set "function=variable"
set /p n=Indique el numero de carácteres 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 número de carácteres definidos por el usuario. He utilizado el comando Setlocal + valor de enabledelayedexpansion para mandarle a mi archivo .bat que habilite la expansión de variables. Asique cómo podemos ver, la polimetría consiste en insertar una variable dentro de otra. ¡Esto puede sernos realmente útil a la hora de programar!

Veamos otro ejemplo para afianzar conocimientos:
CÓDIGO
@echo off
setlocal enabledelayedexpansion
set "function=pyxolo"
for /l %%a in (1,1,6) do (
echo !function:~0,%%a!
)
pause>nul


En pantalla se imprimiría:
CITA
p
py
pyx
pyxo
pyxol
pyxolo








6. Bucles.
· Los bucles, en batch, son trozos de códigos que se repiten a lo largo de la ejecución del archivo batch.
¿Cómo se hacen los bucles?
CÓDIGO

: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 número de ejecuciones que las podemos delimitar a nuestra necesidad.

Veamos un ejemplo de bucle finito:
CÓDIGO
@echo off
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:
CITA
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:
CITA

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 más 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 más archivos.
FSUTIL             Muestra o configura las propiedades de sistema de archivos.
FTYPE               Muestra o modifica los tipos de archivo usados en una asociación de extensión 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 más 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 búsqueda 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 después lo cambia.
RD                     Quita un directorio.
REN                  Cambia el nombre de uno o más 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 gráficamente 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 más importantes!
CD
CÓDIGO
cd directorio

Con el comando cd nos movemos entre directorios.
CÓDIGO
cd "%homepath%\desktop"

Nos situamos en el escritorio.

MD
CÓDIGO
md directorio

Crea un directorio
CÓDIGO
cd carpeta

Crea el directorio/carpeta 'carpeta' en el directorio actual

PUSHD
CÓDIGO
pushd directorio

Lo 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.
CÓDIGO
pushd directorio
popd

Primero nos moveríamos al directorio 'directorio' y luego con popd volveríamos al directorio inicial.

DEL
CÓDIGO
del /parámetros "rutadelarchivo"

Con del podemos borrar archivos y utilizando los parámetros decidiremos como lo/s borraremos
CÓDIGO
del /f /q /s "%homepath%\desktop\file.exe"

Con el parámetro /f forzamos la eliminación de archivos de sólo lectura. Con el parámetro /q lo hacemos de manera silenciosa, es decir, no pide confirmación si utilizamos * (comodín global) para borrar todos los archivos de un directorio). Y, por último, con el parámetro /s eliminamos todos los archivos especificados de subdirectorios.

CÓDIGO
del /f /q /s "%homepath%\desktop\pyxolo\*.txt"

Borra todos los archivos .txt del directorio "%homepath%\desktop\pyxolo" y subdirectorios sin pedir confirmación. Si utilizamos también * (comodín global) en la extensión, entonces borraremos todos los archivos de dicho directorio
CÓDIGO
del /f /q /s "%homepath%\desktop\pyxolo\*.*"


ATTRIB
CÓDIGO
attrib +-parámetro archivo"

Con attrib establecemos o quitamos atributos a archivos.
CÓDIGO
attrib +h "%homepath%\desktop\pyxolo\*.txt"

Con este código establecemos el atributo de oculto a todos los archivos .txt del directorio "%homepath%\desktop\pyxolo"
CÓDIGO
attrib -h "%homepath%\desktop\pyxolo\*.txt"

Con este código quitamos el atributo de oculto a todos los archivos .txt del directorio "%homepath%\desktop\pyxolo"

REN
CÓDIGO
ren "archivo_a_renombrar" "archivo_nombrado

Con ren podemos renombrar archivos.
CÓDIGO
ren "%windir%\file.bat" "%windir%\pyxolo.bat


XCOPY
CÓDIGO
XCOPY origen destino

Con XCOPY podemos copiar archivos de un directorio a otro y, a su vez, renombrarlos.
CÓDIGO
XCOPY "archivo.txt" "%programfiles%\ayuda.txt"








8. Comando FOR.

·Definición del comando for:

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

·Sintaxis del comando (FOR) :

CÓDIGO
FOR %%var IN (conjunto) DO (acciones)


La sintaxis es algo compleja pero muy eficaz.Analicémosla:

%%var=nombre de la variable...siempre tiene que estar precedido de dos %% 'porcentajes' (ejemplo: %%3 %%num)
IN=Incluye al conjunto
(conjunto)=archivos o dígitos 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:
CÓDIGO
FOR %%x IN (archivo1.txt archivo2.exe archivo3.ini) DO del /f /q %%x


Lo que haríamos en esta línea sería 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




CÓDIGO
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 :

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



El conjunto es una sucesión de números que va desde inicio hasta fin y que
aumenta (o disminuye) en función de lo especificado en el paso. Así (0, 2, 10) generará la sucesión 0 2 4 6 8 10 y (10, -1, 5) generará la sucesión 10 9 8 7 6 5




El modificador /D :

CÓDIGO
FOR /D %%dirx in (m*) DO echo %%dirx


El modificador /D sirve para mostrar directorios... En la línea del anterior for nos muestra todos los directorios que comiencen por la letra "m".



Otro modificador /F (más complejo)

# El conjunto puede contener

·Conjunto de archivos ·> sin comillas
·Cadena de caracteres ·> con comillas dobles [ " " >
·Comando ·> con comilla simple [ ' ' >

OPCIONES

CITA

· eol -> Todo lo que esté despues de éste carácter (especificado con eol) será ignorado (para cada linea)

· skip -> Es el número de líneas a saltarse al principio de un archivo o comando.

· delims -> Delims nos sirver para separar strings, si no se coloca esta opción, se usarán como separadores "espacio" y "tab"

· tokens -> Con tokens especificamos qué segmentos, delimitados por "delims", serán 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 séptimo, 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:
CÓDIGO
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 satán






Algunos scripts de ejemplo



Saber las líneas de un archivo
CÓDIGO
::Saber las líneas de un archivo by PyXOLo
@echo off
: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
CÓDIGO
::Extraer la IP privada de tu computadora en una variable por PyXOLo
@echo off
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)
CÓDIGO
@echo off
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.

Este tutorial está sujeto a la Licencia Creative Commons.


Un saludo a todos, pyxolo.


Mensaje Editado el 04:07:58 04/07/2010

Mensaje Editado el 04:13:16 04/07/2010
04/07/2010 04:07:33 
givera
Aprendiz nivel 3
Sin Imagen

Mensajes: 73
Registrad@:
23/06/2009
Estado: Desconectad@
Ir Arriba
RE: Tutorial Programación Batch -completo-

+10!

muy buena guia ;)
04/07/2010 17:56:18 
jhavy
Casi Maestro Nivel 3

Mensajes: 231
Registrad@:
23/07/2009
Estado: Desconectad@
Ir Arriba
RE: Tutorial Programación Batch -completo-

Excelente! men



04/07/2010 20:26:33 
te510
Usuario muy espontáneo
Sin Imagen

Mensajes: 1
Registrad@:
06/07/2010
Estado: Desconectad@
Ir Arriba
RE: Tutorial Programación Batch -completo-

A ver si alguien me puede ayudar necesito hacer un .bat que ejecute una aplicacion en una cierta fecha antes designada x mi, no entiendo mucho y se me complica aunque creo no es tan difcil le doy vueltas y no me sale todavia, osea, Necesito comparar la fecha del sistema con la fecha ingresada antes x mi y si coincide hacer correr un comando.

Otra cosa en esta misma pagina mientras estoy escribiendo ya me salto 2 veces el antivirus cuando se quiere ingresar un virus, fijense si pueden solucionarlo ya que me gusto el post y creo puede ser de gran utilidad para aprender. Un abrazo._
06/07/2010 00:28:19 
pyxolo
Usuario espontáneo
Sin Imagen

Mensajes: 2
Registrad@:
04/07/2010
Estado: Desconectad@
Ir Arriba
RE: Tutorial Programación Batch -completo-

Utiliza los comandos if y schtasks. Busca informacióm con:

CÓDIGO
comando /?
07/07/2010 22:29:50 


REGÍSTRATE PARA PODER ENVIAR UN MENSAJE (tardas 20 segundos)

Copyright ForoHack.com