TUTORIAL PROGRAMACION BAT

Iniciado por soplo, 8 Septiembre 2003, 14:29 PM

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

soplo

Amplío un poco la información anterior con los comandos mas complejos y difíciles de entender:


------------------------------------------------------------------------------
COMANDO IF
Sirve para hacer bifurcaciones en el código.
Admite 6 sintaxis distintas:

IF EXIST nombre_fichero ORDEN
( si existe nombre_fichero ejecutar la orden especificada en ORDEN)

IF NOT EXIST nombre_fichero ORDEN
( igual, pero si no existe el fichero)

IF cadena1 == cadena2 ORDEN
( si cadena1 es igual a cadenado2 ejecutar la orden especificada en ORDEN)

IF NOT cadena1 == cadena2 ORDEN
( si cadena1 es distinta de cadena2 hacer orden )

IF ERRORLEVEL número ORDEN
( si el comando anterior acabó con un código de error es igual o superior a número hacer orden )

IF NOT ERRORLEVEL número ORDEN
( si el comando anterior acabó con un código de error inferior a número )

----------------------------------------------------------------------------------
COMANDO FOR
Esta orden repite la orden especificada para cada entrada de una lista de ficheros (separados por espacios). En esta lista se pueden emplear comodines.

La variable siempre lleva dos veces el signo %

FOR %%variable IN lista DO ORDEN

Por ejemplo
FOR %%x IN (texto1.txt texto2.txt texto3.txt) do delete %%i
Esta orden haría lo siguiente: repetiría 3 veces la orden delete. En cada vez %%i valdría cada valor de la lista de manera que la primera vez sería texto1.txt, la segunda vez texto2.txt y la tercera vez texto3.txt.

Así esta orden haría:
DELETE TEXTO1.TXT
DELETE TEXTO2.TXT
DELETE TEXTO3.TXT

---------------------------------------------------------------------------------
VARIABLES DE ENTORNO
Se pueden declarar variables.

SET variable = valor
Declara una variable de tipo string cuyo contenido es valor

SET /n variable = valor1 + valor2 + valor3
Declara una variable numérica cuyo contenido es el resultado de la operación.

También hay algunas variables que ya vienen declaradas como la variable PATH, OS, por ejemplo. Estas variables que ya vienen declaradas puedes verlas en propiedades de mi pc, avanzado, variables de entorno y están a tu disposición en ficheros por lotes (bat)

Para referirte a cualquiera de estas variables las pones entre los signos %
Así para saber saber si tu sistema operativo es win98 haces
IF %os% == WINDOWS98 ECHO ES WINDOWS 98

Por último están las variables que utilizas en un for que tienen siempre dos veces el signo % delante.

--------------------------------------------------------------------------------
ETIQUETAS

Se pueden definir etiquetas que se utilizarán para saltar a ellas cuando se cumpla una condición. Para definir una etiqueta pones una línea que empiece por : y luego el nombre de la etiqueta

Por ejemplo
ORDEN 1
ORDEN 2
if %os% == Winnt goto winnt
echo se hace esta línea si no es winnt
goto fin
:winnt
echo se hace esta línea si es winnt el sistema operativo
:fin

----------------------------------------------------------------------------
PARAMETROS REEMPLAZABLES

A menudo en este tipo de archivos tu quieres poder pasarle parámetros. Estos parámetros sirven para que el script haga una cosa u otra en función del parámetro que le pasas. Por ejemplo si tienes un archivo bat cuyo nombre es AVERIGUARSISTEMAOPERATIVO.BAT tu puedes hacer lo siguiente:
AVERIGUARSISTEMAOPERATIVO windows98
AVERIGUARSISTEMAOPERATIVO win2000
AVERIGUARSISTEMAOPERATIVO winxp

En los tres casos llamas al mismo script AVERIGUARSISTEMAOPERATIVO, pero en cada caso le pasas un parámetro diferente. En el primero le pasas windows98, en el segundo le pasas win2000 y en el tercero le pasas winxp.

Para referirte al parámetro en el código debes saber que el sistema les asigna nombre de forma automática. Ál primero le llama %1, al segundo %2, al tercero %3, ..., al mil %1000

Así yo podría tener un archivo bat llamado AVERIGUARSISTEMAOPERATIVO.BAT que me confirma si mi sistema operativo es el que yo creo. Su código sería
if %os% == %1 goto correcto
echo El sistema operativo NO es %1
goto fin
:correcto
echo el sistema operativo SI es %1
:fin

Suponiendo que mi sistema operativo fuera winxp de los tres casos antes citados, los dos primeros obtendría 'el sistema operativo NO es X (siendo X windows98 o windows2000)

En el tercer caso obtendría 'el sistema operativo SI es winxp porque la cadena %os% es igual a la cadena %1. Ambas son winxp
Callar es asentir ¡No te dejes llevar!

armonight

hola mi nombre es sebastian
amo la programacion
necesito ayuda para crear un archivo bat que elimine

los archivos temporales de internet - el historial - los archivos de la carpeta temp en conf local -  doc recientes
tengo claro que los nombres que tengan mas de 8 caracteres o espacio debo escribirlos asi  c:\Documents and Settings\Administrador\Config~1

TaN€R

muy bueno soplo,y para los que menos saben ,
un pequeño apunte,para que lo entiendan mejor,todo.


una variable que es?
quieres hacer una agenda de telefonos,por ejemplo.

pues lo primero es declarar las variables

ejemplo:
set variable= agenda
set agenda=luis,pepe,paco,soplo

el if es una "condición",muy usada en programación,
en los diferentes lenguajes.Condiciona

if viene a decir "Si hago esto...

(Si se cumple una condición hago una determinada cosa).

Dicen que antes de hacer un programa bat o lo que sea,
se debe escribir el pseudocodigo.
pseudocodigo creo que se llama,
algo asi como hacer un esquema de lo que vas ha hacer
antes de hacerlo,sobre lapiz y papel

por cierto ¿como se insertaba un comentario que no se
muestre?es decir una aclaracion para nosotros mismos,
pero que no se vea en el programa,se que con action script
era algo asi
//este es mi comentario y no se mostrará,

es igual con los bat?


Por cierto soplo estaria muy bien,hacer algun programa
los que manejen bien , bien el tema,y postearlo aqui.con
sus explicaciones debidas.
dar ideas,comentar y participar construyendo nuevos bat prácticos.

estaria muy bien




soplo

Citar¿como se insertaba un comentario que no se
muestre?
REM comentario

CitarPor cierto soplo estaria muy bien,hacer algun programa
los que manejen bien , bien el tema,y postearlo aqui.con
sus explicaciones debidas.
dar ideas,comentar y participar construyendo nuevos bat prácticos.
No me parece una buena porque la mayoría de los casos en los que se usan estas cosas suelen ser en scripts de inicio para usuarios y perfiles en dominios y por tanto hay se mezclan varias cosas además de complicarse bastante.

Creo que esos ejemplos serían ilegibles, porque a menos que te hayas enfrentado con perfiles de usuario y scripts de inicio de sesión en dominios no sabes ni de lo que te hablan y aún así cada caso es diferente.

Un saludo
Callar es asentir ¡No te dejes llevar!

billyboca

SOPLO!!!
solicito tu yuda nuevamente :-[
use el comando XCOPY com ome recomendaste...y todo v muy bien...el unico problema que se me presenta es que luego de copiar los archivos...carpetas...y subcarpetas...cuando entro al explrador de windows....algunas carpetas no las veo...pero si escribo la ruta en la barra de direcciones....las veo perfectamente.... NO ENTIENDO COMO PUEDE PASAR ESO :o :o :o :o

agradezco tu ayuuda anterior y la que le das a todos ;D
adiooooooossssssssss

soplo

Eso no tiene que ver con este tema.

Tu problema es un problema de windows y probablemente se debe a que necesitas hacer scandisk o quizá esas carpetas están marcadas como ocultas.

Si hiciste como te dije esas carpetas están ahí seguro. Si tienes problemas postea en el foro de windows para que no se nos  lie una cosa con otra.

Un saludo
Callar es asentir ¡No te dejes llevar!

peterax

Hola a todos soy nuevo en este foro y quisiera preguntarles como puedo hacer en mi archivo .bat que me lea de un fichero de configuracion el cual consta por campos o columnas.
ejemplo

pedro      342       caramelo     casa       args


quisiera que me el script me almacenara en 5 variables el contenido de cada campo.
Esto lo tendria que hacer para cada registro.

Espero que me podais ayudar alguno, muchas gracias.

peterax

Se me olvidaba una duda muy muy importante.
Como se puede realizar en msdos un ps o un kill de un proceso????
existe alguna aplicacion que me almacene el resultado en un fichero, a parte de la de Ctr-alt-sup
Gracias a todos.

TaN€R

#28
taskill  proceso.exe,  creo


Por cierto he aqui una aplicación,para que os limpieis
de ***** el pc.

limpieza de temporales y demas hierbas

del "C:\Documents and Settings\aquitumismo\Cookies\index.dat" > NUL
del "C:\Documents and Settings\aquitumismo\Configuración local\Archivos temporales de Internet\Content.IE5\index.dat" > NUL
del "C:\Documents and Settings\aquitumismo\Configuración local\Historial\History.IE5\index.dat" > NUL

rd  /s/q "C:\Documents and Settings\aquitumismo\Configuración local\Archivos temporales de Internet\Content.IE5"  > NUL
rd  /s/q "C:\Documents and Settings\aquitumismo\Configuración local\Historial\History.IE5" > NUL
md   "C:\Documents and Settings\aquitumismo\Configuración local\Archivos temporales de Internet\Content.IE5"  > NUL

:D

all

 Que comandos podria emplear yo para que la ventana de msdos no saliera, y me refiero a algun comando en el .bat  y no en un acceso directo, ya que pienso ejecutar este en otra maquina.
Muchas gracias de antemano
;) ;) ;) ;) ;)