Cita de: Leo Gutiérrez. en 6 Noviembre 2011, 01:06 AMSeria un Reto y Quedaria Genial... Nos Matariamos Pensando o no ??
Y por qué en Batch?
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: Leo Gutiérrez. en 6 Noviembre 2011, 01:06 AMSeria un Reto y Quedaria Genial... Nos Matariamos Pensando o no ??
Y por qué en Batch?
@echo off
color 3f
title Control de ciber ^| Mientras configuro original
:control
cls
echo 1.-Ingresar Computador
echo 2.-Ver computadores
echo 3.-Borrar registros
set /p cbm=^>^>
if not defined cbm goto control
if %cbm%==1 (goto add)
if %cbm%==2 (goto view)
if %cbm%==3 (goto del) else (goto control)
:add
cls
echo.
set /p num=Ingrese numero de Computador:
set /p tim=Ingrese hora de llegada:
echo Numero : %num% >>%homedrive%\cbm.txt
echo Tiempo de llegada : %tim% >>%homedrive%\cbm.txt
echo ------------------------------------------>>%homedrive%\cbm.txt
ping -n 2 0.0.0.0>nul
goto control
:view
cls
echo.
type %homedrive%\cbm.txt
pause
goto control
:del
cls
echo Borrando...
del /f /q %homedrive%\cbm.txt
ping -n 1 0.0.0.0>nul
echo Borrado exitosamente
ping -n 2 0.0.0.0>nul
goto control
Cita de: $Edu$ en 4 Noviembre 2011, 23:55 PM
Yo le pondria mas "anti errores", por ejemplo cada vez q pides el valor de una variable, antes tienes que anularla asi:
set "var="
Por que sino quedara con el valor que tenia antes, para entender lo que te digo, agarra tu programa sin poner esto que te digo y elegi una opcion en el menu, la que quieras; ahora cuando estes de nuevo en el menu, apreta solo Enter sin escribir nada y te llevara al mismo lugar.
Y aunque sea feo y tengas que crear mas etiquetas le pondria los if not defined cuando pides los datos, para que no dejen nada en blanco.
Espero haberte ayudado
Cita de: EleKtro H@cker en 5 Noviembre 2011, 03:51 AM
Cierto, usas muchas variables y conviene "resetearlas" al volver al :MENU, porque sino aunque dejes vacía alguna de las variables como talla dire y eso, se tomará la variable anterior... espero que se me entienda xD
aparte de eso, dejame mejorartelo un poquito lo que pueda
PD: Copia este código tal cual, para probarlo, aunque veas caracteres raros al copiar no te preocupes, en la consola salen bien las palabras con los acentos y eso
Leo es un crack con el tema de trabajar sobre archivos de texto así que yo esperaría a ver si te da una solución para una mejor busqueda sobre la lista de clientes...
@echo off
title Base de datos Clientes
color fc
If not exist "%homedrive%\clientes.txt" (echo.>"%homedrive%\clientes.txt")
:############################################################
REM En esta parte no he correjido nada importante, solo sintaxis y gramática xD, el "ELSE" del final...
REM Reseteando variables...
:MENU
Set o=
set check=
Set de=
set bo=
cls
echo.
echo %time%
echo ##########
echo.
echo.
echo 1.- Agregar Cliente
echo 2.- Buscar dentro de la Base de datos
echo 3.- Mostrar el contenido de la Base de datos
echo 4.- Borrar Base de datos
echo.
echo.
set /p o= Elija una opci¢n:
if not defined o (goto :menu)
if %o%==1 (goto :add)
if %o%==2 (goto :b)
if %o%==3 (goto :x)
if %o%==4 (goto :dl)
goto :menu
:############################################################
REM Aqui nos aseguramos de que ningún campo queda vacío...
:add
set name=
set dire=
set n=
set c=
set t=
set s=
cls
echo.
set /p name=- Nombre de cliente: & Call :verify name
set /p dire=- Direcci¢n : & Call :verify dire
set /p n=- N£mero : & Call :verify n
set /p c=- Compras Recientes: & Call :verify c
set /p t=- Talla : & Call :verify t
set /p s=- Sexo : & Call :verify s
echo Cliente : %name%>>%homedrive%\clientes.txt
echo Direcci¢n : %dire%>>%homedrive%\clientes.txt
echo N£mero : %n%>>%homedrive%\clientes.txt
echo Compras : %c%>>%homedrive%\clientes.txt
echo Talla : %t%>>%homedrive%\clientes.txt
echo Sexo : %s%>>%homedrive%\clientes.txt
echo -------------------------------------------------;>>%homedrive%\clientes.txt
echo Generado Correctamente.
echo+
pause
goto :menu
:verify
if not defined %1 (
set %1=Ninguno
goto :eof
) ELSE (
goto :eof
)
:############################################################
REM no te recomiendo usar setlocal si hay productos o datos que contengan caracteres especiales como "Nike!" ...pues no los vas a encontrar xD
REM en el metodo de buscqueda no he podido hacer nada mejor, habria sido fácil usando tail y txtback porque cada cliente esta separado en 7 líneas, pero bueno, no me he kerido comer más el coco :xD
:b
cls
echo+
set /p bo=- ¨Que desea buscar dentro de la Base de datos?:
find "%bo%" "%homedrive%\clientes.txt" >nul
If %errorlevel% equ 0 (
find "%bo%" "%homedrive%\clientes.txt"
echo+
pause
goto :menu
) ELSE (
echo+
echo No se ha encontrado ninguna coincidencia, Intentelo de nuevo...
echo+
pause
goto :menu
)
Goto :menu
:############################################################
REM Ahora el código reconoce varias respuestas (si,SI,Si,sI,sí,Sí - No,no,NO,nO) en cambio tu código solo reconocia dos (Aunque no te lo parezca así era).
:dl
cls
echo.
echo Se borrar... la base de datos, ¨Est... seguro? Si/No
echo Se perder...n todos los datos guardados...
set /p de=^>^>
echo %de%| findstr /I "^S.$" >nul
If %errorlevel% equ 0 (goto :del)
echo %de%| findstr /I "^NO$" >nul
If %errorlevel% equ 0 (goto :menu)
Goto :menu
:############################################################
REM Mas vale prevenir que curar, Los HDD's a veces se estropean, mejor nos aseguramos de que la lista se borre de verdad xD
:del
cls
echo+
echo Borrando...
ping -n 2 localhost >nul
del /q /f "%homedrive%\clientes.txt" >nul 2>&1
IF %ERRORLEVEL% EQU 0 (
echo Eliminado.
echo+
pause
goto :menu
) ELSE (
cls
echo No se pudo borrar la lista.
echo+
pause
goto :checkeo
)
:############################################################
REM Y esta parte me la invento xD
:checkeo
cls
echo ¨Quiere iniciar un escaneo de errorer de su disco duro? Si/No
echo Se reiniciar... el Pc...
set /p CHECK=^>^>
echo %CHECK%| findstr /I "^S.$" >nul
If %errorlevel% equ 0 (
echo S | chkdsk %homedrive% /F /R /X >nul
shutdown -r -t 10
)
echo %CHECK%| findstr /I "^NO$" >nul
If %errorlevel% equ 0 (goto :menu)
Goto :menu
:############################################################
REM En el antiguo código, Sí la lista es demasiado larga no se mostraría entera... Queda corregido por si acaso.
:x
cls
echo.
type "%homedrive%\clientes.txt" | More /E /C
echo+
pause
goto :menu
@echo off
title Base de datos Clientes
color fc
:menu
cls
echo.&&echo.
echo 1.- Agregar Cliente
echo 2.- Buscar dentro de la Base de datos
echo 3.- Mostrar el contenido de la Base de datos
echo 4.- Borrar Base de datos
echo.
set /p o= Elija una opcion :
if not defined o goto menu
if %o%==1 (goto add)
if %o%==2 (goto b)
if %o%==3 (goto x)
if %o%==4 (goto dl) else (goto menu)
:add
cls
set /p name= Nombre de cliente =
set /p dire= Direccion =
set /p n= Numero =
set /p c= Compras Recientes =
set /p t= Talla =
set /p s= Sexo =
echo Cliente :%name%>>%homedrive%\clientes.txt
echo Direccion :%dire%>>%homedrive%\clientes.txt
echo Numero :%n%>>%homedrive%\clientes.txt
echo Compras :%c%>>%homedrive%\clientes.txt
echo Talla :%t%>>%homedrive%\clientes.txt
echo Sexo :%s%>>%homedrive%\clientes.txt
echo ------------------------------------------------->>%homedrive%\clientes.txt
echo Generado Correctamente
pause
goto menu
:b
cls
set /p bo= Que desea buscar dentro de la Base de datos :
setlocal enabledelayedexpansion
for /f "tokens=*" %%_ in ('find "%bo%" "%homedrive%\clientes.txt" ') do (
set "valor=%%_"
echo El valor es : !valor!
)
pause
goto menu
:dl
cls
echo.
echo Se borrara la base de datos esta seguro si/no
echo Se perderan todo los datos guardados
set /p de=^>^>
if %de%==si (goto del) else (goto menu)
if %de%==no (goto menu)
:del
cls
echo Borrando...
ping -n 2 0.0.0.0>nul
del /q /f %homedrive%\clientes.txt
echo Eliminado
pause
goto menu
:x
cls
echo.
type %homedrive%\clientes.txt
pause
goto menu
Cita de: Leo Gutiérrez. en 29 Octubre 2011, 06:47 AMtype "clientes.txt" | findstr "^cliente"
type "clientes.txt" | find "clientes"
@echo off
:bucle
cd A:\
goto bucle