TUTORIAL PROGRAMACION BAT

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

0 Miembros y 2 Visitantes están viendo este tema.

LastDragon

Cita de: Compusers en  7 Abril 2006, 20:08 PM
Mi problema es que tngo un archivo .ini que quisiera modificar mediante un .bat pero me falta una ayudadita para poderlo editar por ejemplo:

Echo 1.- Cual es tu nombre?
Echo 2.- Cuantos años Tienes?
Echo 3.- Que sexo tienes?
Echo 4.- Salir

choice 1234

if errorlevel 4 goto salir
if errorlevel 3 goto sexo
if errorlevel 2 goto años
if errorlevel 1 goto nombre

Salir:
@Exit

sexo:
echo.
echo Preciona M ó H segun tu Sexo
echo.
choice MH

if errorlevel 2 goto Hombre
if errorlevel 1 goto Mujer

Hombre:
echo [SEXO]=H > c:\Empleados\config.ini
C:\Modificar.bat

Mujer:
echo [SEXO]=M > c:\Empleados\Config.ini
C:\Modificar.bat

años:
Echo.
Echo Escribe cuantos años tienes y preciona Enter
Echo.

( Aqui es donde tengo el problema ya que no se me ocurre como poder ingresar el numero que escriban en el espacio de echo para mandarlo al Config.ini y tambien que no se si es posible poner en un lugar de la lista el escrito )
Ejemplo:

[Nombre]= ?
[Edad]= ?
[Sexo]= ?

el echo quedaria

echo [Nombre]= Mi Nombre > c:\Empleados\Config.ini
echo [Edad]= Mi Edad > c:\Empleados\Config.ini
echo [Sexo]=  :D3 veces al Dia:D > c:\Empleados\Config.ini

pero como puedo escribir en cada lugar que le corresponde a cada instruccion, de antemano muchas gracias

hay un tipo especial de comando que no es ni interno i exteno en los bat... Son comados bat que solo estan habilitados cuando el bat corre.

Uno de ellos es el equivalente en unix al read y lo que lee lo mete en una variable..

necesitaras el help del msdos 6.22 o versiones similares y buscar los subcomandos bat.

si pones help en un XP no te dara eso comandos

sirdarckcat

Hay muchas maneras de pedir una cadena de texto, la mas facil de pensar es un bucle de "choice 0123456789"

Otra opcion seria hacer un programa con debug que almacenara la variable.. eso esta en la MKDB (http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q77457&)

otra forma seria con caracteres de escape:

echo ESCRIBE ALGO:
ECHO 
COPY CON USRINPUT.TMP
ECHO 
CLS
ECHO escribiste:
TYPE USRINPUT.TMP


Dependiendo del SO, tambien podrias usar esto:

FOR /F "tokens=*" %%A IN ('TYPE CON') DO SET INPUT=%%A
ECHO Escribiste: "%INPUT%"


http://www.robvanderwoude.com/index.html

Ahora que si quieres hacer mas grafico tu porgrama, podrias usar algo como esto:
http://my.fcc.net/~tglbatch/input95.html

LastDragon, no existe ninguna funcion como la que dices..

Saludos!!

pemo

ola, keria saber si alguien me puede ayudar a hacer un batch k ni sikiera se si se puede.  Dos preguntas:

- Por un lado quiero ejecutar un programa (lame) sobre cada fichero de un directorio. Habia pensado en un dir /b > fichero.txt. Pero ahora no se si existe un comando en DOS que pueda coger lineas de un fichero (le haria un bucle FOR). Existe algún comando??????

- Por otro lado quiero que la salida del batch se guarde en un fichero que tenga como nombre la fecha del fichero origen. Si pudiera obtener la fecha con algún comando de DOS del fichero origen la guardo en una variable y luego la utilizo. Exista comando para obtener fecha de un fichero????.

A ver si alguien me puede ayudar por favor. Muchas Gracias y un saludo.

pemo

ola, keria saber si alguien me puede ayudar a hacer un batch k ni sikiera se si se puede.  Dos preguntas:

- Por un lado quiero ejecutar un programa (lame) sobre cada fichero de un directorio. Habia pensado en un dir /b > fichero.txt. Pero ahora no se si existe un comando en DOS que pueda coger lineas de un fichero (le haria un bucle FOR). Existe algún comando??????

- Por otro lado quiero que la salida del batch se guarde en un fichero que tenga como nombre la fecha del fichero origen. Si pudiera obtener la fecha con algún comando de DOS del fichero origen la guardo en una variable y luego la utilizo. Exista comando para obtener fecha de un fichero????.

A ver si alguien me puede ayudar por favor. Muchas Gracias y un saludo.

vishero

Hola,

Primero agradecer a todos los que han compartido sus conocimientos en este post...

No tengo mucha idea del tema, pero leyendo este estupendo hilo se aprende mucho...

Estoy intentando hacer un menú para un DVD con software variado, que permita elegir cual instalar.

Algo muy simple...

El Autorun.inf ejecutaría el Menu.bat, que a modo de ejemplo, sería el siguiente, para las pruebas he puesto solo dos opciones, pero serán varias mas:

@ECHO OFF

COLOR 1f

TITLE INSTALACION PRODUCTOS ADOBE


:MENU
cls
ECHO.
ECHO.
ECHO.
ECHO   ----------------------------------------------
ECHO.
ECHO         SELECCIONAR EL SOFTWARE A INSTALAR
ECHO.
ECHO   ----------------------------------------------
ECHO.
ECHO.
ECHO     1 - Instalar Adobe Acrobat 7.0 Professional
ECHO.
ECHO     2 - Instalar Adobe Creative Suite 2.0
ECHO.
ECHO.

:ELECCION
ECHO.
ECHO.
ECHO   ---------------------------------------------------
ECHO    Introduzca numero de eleccion, o T para terminar:
ECHO   ---------------------------------------------------
set /p opcion1=
IF %opcion1%==1 GOTO ACROBAT
IF %opcion1%==2 GOTO CREATIVE
IF %opcion1%==t GOTO FIN

:ACROBAT
ECHO.
ECHO.
ECHO   -------------------------------------------
ECHO    Instalar Adobe Acrobat Professional v7.0
ECHO   -------------------------------------------
PAUSE
CD Adobe Acrobat 7.0 Professional\
AutoPlay.exe
GOTO OTRO

:CREATIVE
ECHO.
ECHO.
ECHO   -------------------------------------------
ECHO     Instalar Adobe Creative Suite CS2 v9.0
ECHO   -------------------------------------------
PAUSE
CD Adobe Creative Suite 2.0\
Setup.exe
GOTO OTRO

:OTRO
ECHO.
ECHO.
ECHO   -------------------------------------------
ECHO      Quiere instalar otro software (S/N):
ECHO   -------------------------------------------
set /p opcion2=
IF %opcion2%==s GOTO MENU
IF %opcion2%==n GOTO FIN

:FIN
exit


El bat funciona bien en la primera elección, ejecuta el instalador elegido y cuando termina se va a :OTRO, si selecciono N se cierra, y si selecciono S vuelve al principio.

El problema es que ahora no encuentra la ruta de los ejecutables, es como si hubiera cambiado el path...

Como hago para "fijar" los directorios que contienen los ejecutables en relación al .bat?..., teniendo en cuenta que la letra de CD/DVD puede variar de un PC a otro, o dentro del mismo PC si tiene mas de un CD/DVD...

Si además alguien tiene alguna sugerencia de cambio o mejora del código, será bienvenida...   :)

sl2

jarmenkell

Problo
saludos a todos tengo un problema el asunto es el siguiente necesito concatenar dos directorios ejemplo
set directorio = cd

y luego en directorio concatenarlo con /b123/FD

agradezco su ayuda

Hendrix

 :o :o :huh: :huh: :huh:, explikate mejor....que kieres hacer???? sacar por ejemplo C:\Windows y agregarle /b123/FD??? :-\ :-\ :-\

Expliakte mejor... ;) ;)

Salu2

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

thor3308

hola quisiera saber como crear un bat para un backup que comprima con pkzip una carpeta con sus subcarpetas y programarlo para que se ejecute a una hora determinada. gracias

urtxiak68

hola, necesito ayuda urgente!!este es mi primer post, me he registrado porque llevo tiempo leyendo y aprendiendo pero aqui estoy atascada. necesitaria que alguien me explicara como hacer un fichero bat que borre todos los archivos que tengan mas de 7 dias de antiguedad de la fecha en la que ejecute el programa.
muchisimas gracias

soplo

hola urtxiak

Pues la fecha actual del sistema la tienes en %date%, pero no veo como puedes acceder a la fecha de los archivos en este entorno de manera que a mi modo de ver esto no se puede hacer.

Te aconsejo que crees una pequeña aplicación en C, vbscript  o similar que te lo haga.

Un saludo
Callar es asentir ¡No te dejes llevar!