elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  dos scripts
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: dos scripts  (Leído 5,339 veces)
Towandy

Desconectado Desconectado

Mensajes: 12


Ver Perfil
dos scripts
« en: 11 Marzo 2012, 01:43 am »

tengo esta agenda, pero no consigo que modifique ni que elimine solo el registro, esto es lo que tengo de la agenda:

Código
  1. @echo off
  2. :menu
  3. cls
  4. echo.
  5. echo.
  6. echo **************************************
  7. echo **      AGENDA TELEFONICA           **
  8. echo **                                  **
  9. echo **   1. Agregar                     **
  10. echo **                                  **
  11. echo **   2. Modificar                   **
  12. echo **                                  **
  13. echo **   3. Borrar                      **
  14. echo **                                  **
  15. echo **   4. Buscar                      **
  16. echo **                                  **
  17. echo **   0. Salir                       **
  18. echo **                                  **
  19. echo **************************************
  20. echo.
  21. echo Escoger opcion:
  22. set /p opt=
  23. if %opt%==1 goto :agregar
  24. if %opt%==2 goto :modificar
  25. if %opt%==3 goto :borrar
  26. if %opt%==4 goto :buscar
  27. if %opt%==0 goto :salir
  28. goto menu
  29.  
  30. :agregar
  31. cls
  32. set /p agregar= Nuevo nombre:
  33. echo.
  34. set /p telefono= Numero telefono:
  35. echo.
  36. echo %agregar% : %telefono%>> agenda.txt
  37. echo Registro agregado
  38. echo.
  39. echo Pulse una tecla para volver al menu
  40. pause>nul
  41. goto :menu
  42.  
  43. :modificar
  44. cls
  45. set /p modificar= Escriba el nombre a modificar:
  46. set /p mod= Escriba el nuevo nombre:
  47.  
  48. for /f "tokens=* delims=" %%x in ('type Registros') do (
  49. set /a conta +=1
  50. set linea=%%x
  51. set linea=!linea:%modificar%=%mod%!
  52. call :show !linea!
  53. )
  54. goto :menu
  55.  
  56. :show
  57. echo %* >> out.txt
  58. if !conta!==1 (
  59. echo.>Registros
  60. )
  61.  
  62. type out.txt >> Registros
  63. del /f /a /q out.txt
  64. pause>nul
  65. goto :menu
  66.  
  67. :borrar
  68. cls
  69. set /p borrar= Nombre del contacto a eliminar:
  70. if exist "agenda\%borrar%.bat" (goto dels) else (goto deln)
  71. :dels
  72. del /f /s /q "G:\agenda\%borrar%.bat"
  73. cls
  74. echo El contacto ha sido eliminado correctamente
  75. pause>nul
  76. goto :menu
  77. :deln
  78. cls
  79. echo Ese contacto no existe en la agenda
  80. echo.
  81.  
  82. :buscar
  83. cls
  84. echo.
  85. set /p find= Buscar:
  86. cls
  87. echo.
  88. echo Resultados:
  89. echo.
  90. find /n /i "%find%" agenda.txt
  91. echo Pulse una tecla para volver al menu
  92. pause>nul
  93. goto :menu
  94.  
  95.  
  96. :salir
  97. cls
  98. echo Ok, presione cualquier tecla para salir
  99. pause>nul
  100. exit
  101.  
  102.  
  103. También tengo otro problema, que no consigo que me lo ordene de esta manera:
  104. un asterisco y un número par en la misma línea en un archivo y un asterisco y un número impar en una línea en otro archivo, :así
  105. * 2
  106. * 6
  107.  
  108. en el otro archivo así
  109. * 1
  110. * 5
  111.  
  112. tengo esto
  113.  
  114. @echo off
  115. cls
  116. echo Voy a ordenar el fichero txt:
  117. echo.
  118. set /p ordenar=
  119. sort %ordenar%
  120. echo Archivo ordenado
  121. echo.
  122. echo Pulse una tecla para volver al menu
  123. pause>nul
  124.  
Si alguien puede ayudarme...


« Última modificación: 11 Marzo 2012, 01:57 am por Leo Gutiérrez. » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: dos scripts
« Respuesta #1 en: 11 Marzo 2012, 02:25 am »

1º - Tienes que escapar los caracteres especiales.

 :-(  echo %agregar% : %telefono%

 ;D echo %agregar% ^: %telefono%

Con eso ya funciona la opcion "agregar".



2º - for /f "tokens=* delims=" %%x in ('type Registros')

      No estás delimitando nada, falta el simbolo delimitador...
      Y además, No existe el archivo "Registros" así que el comando del type no puede funcionar.


3º - set linea=!linea:%modificar%=%mod%!
 
      ¿Has leido algún tutorial de batch?
      Estás expandiendo la variable sin tener la caracteristica activada.

      Setlocal enabledelayedexpansion


4º -  set /a conta+=1
       if !conta! EQU 1


        No se con que intención intentaste rear un contador, la verdad...



Aqui tienes...

Saludos


Código:
@echo off
Setlocal enabledelayedexpansion

:menu
cls
echo.
echo.
echo **************************************
echo **      AGENDA TELEFONICA           **
echo **                                  **
echo **   1. Agregar                     **
echo **                                  **
echo **   2. Modificar                   **
echo **                                  **
echo **   3. Borrar                      **
echo **                                  **
echo **   4. Buscar                      **
echo **                                  **
echo **   0. Salir                       **
echo **                                  **
echo **************************************
echo.
echo Escoger opcion:
set /p opt=
if %opt%==1 goto :agregar
if %opt%==2 goto :modificar
if %opt%==3 goto :borrar
if %opt%==4 goto :buscar
if %opt%==0 goto :salir
goto menu
 
:agregar
cls
set /p agregar= Nuevo nombre:
echo.
set /p telefono= Numero telefono:
echo.
echo %agregar% ^: %telefono%>> agenda.txt
echo Registro agregado
echo.
echo Pulse una tecla para volver al menu
pause>nul
goto :menu
 
:modificar
cls
set /p modificar= Escriba el nombre a modificar:
set /p mod= Escriba el nuevo nombre:
 
for /f "tokens=*" %%x in ('type "agenda.txt"') do (
set "linea=%%x"
set linea=!linea:%modificar%=%mod%!
Echo !linea! >> Nueva_Agenda.txt
call :show !linea!
)
Del /Q "Agenda.txt"
Rename "Nueva_Agenda.txt" "Agenda.txt"
goto :menu

 
:borrar
cls
set /p borrar= Nombre del contacto a eliminar:
if exist "agenda\%borrar%.bat" (goto dels) else (goto deln)
:dels
del /f /s /q "G:\agenda\%borrar%.bat"
cls
echo El contacto ha sido eliminado correctamente
pause>nul
goto :menu
:deln
cls
echo Ese contacto no existe en la agenda
echo.
 
:buscar
cls
echo.
set /p find= Buscar:
cls
echo.
echo Resultados:
echo.
find /n /i "%find%" agenda.txt
echo Pulse una tecla para volver al menu
pause>nul
goto :menu
 
 
:salir
cls
echo Ok, presione cualquier tecla para salir
pause>nul
exit
 
 
También tengo otro problema, que no consigo que me lo ordene de esta manera:
un asterisco y un número par en la misma línea en un archivo y un asterisco y un número impar en una línea en otro archivo, :así
* 2
* 6
 
en el otro archivo así
* 1
* 5
 
tengo esto
 
@echo off
cls
echo Voy a ordenar el fichero txt:
echo.
set /p ordenar=
sort %ordenar%
echo Archivo ordenado
echo.
echo Pulse una tecla para volver al menu
pause>nul
 


Saludos


« Última modificación: 11 Marzo 2012, 02:30 am por EleKtro H@cker » En línea



Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: dos scripts
« Respuesta #2 en: 11 Marzo 2012, 04:06 am »

Código:
[quote author=Towandy link=topic=356161.msg1727177#msg1727177 date=1331426621]
También tengo otro problema, que no consigo que me lo ordene de esta manera:
un asterisco y un número par en la misma línea en un archivo y un asterisco y un número impar en una línea en otro archivo, :así
* 2
* 6

en el otro archivo así
* 1
* 5

tengo esto

@echo off
cls
echo Voy a ordenar el fichero txt:
echo.
set /p ordenar=
sort %ordenar%
echo Archivo ordenado
echo.
echo Pulse una tecla para volver al menu
pause>nul
Si alguien puede ayudarme...
[/quote]

Explica con más detalles, ¿Cual es el problema?, Sort ordena correctamente esos ejemplos que pusiste.

saludos
En línea



Towandy

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: dos scripts
« Respuesta #3 en: 11 Marzo 2012, 10:04 am »

Explico el tema,

Hay un archivo txt con 10 números y asteriscos desordenados, cada número y asterisco en una línea y crear un .bat  que pasando ese txt como parámetro cree unn fichero txt con los datos del fichero anterior solo con los números pares y otro fichero con los números impares.

Gracias
En línea

Towandy

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: dos scripts
« Respuesta #4 en: 11 Marzo 2012, 10:08 am »

Sí he leído manuales de batch, pero quizá debería haber uno para tontos que explicara bien para qué sirve cada cosa explicando con detalle un ejemplo para for, todos los if, sort, randomize, parámetros... y como no he encontrado ninguno así, pues tengo mucho despiste, llevo muy poco tiempo con esto.

Gracias
En línea

Towandy

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: dos scripts
« Respuesta #5 en: 11 Marzo 2012, 10:10 am »

pero tampoco consigo que la agenda borre un registro sólo, lo que consigo es que se cargue por completo el archivo txt donde están todos los registros.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: dos scripts
« Respuesta #6 en: 11 Marzo 2012, 10:57 am »

Explico el tema,
que pasando ese txt como parámetro cree unn fichero txt con los datos del fichero anterior solo con los números pares y otro fichero con los números impares.

Usa el botón "EDITAR" en vez de escribir 3 posts en 2 minutos, o algún mod te echará bronca xD

Te hago el code y tu ya lo aplicas...

EDITO: Si solo son 10 números no hace falta tanto code la verdad, Pero esto te sirve para todas las cantidades de números que quieras xD

Código:
@Echo off
Setlocal enabledelayedexpansion

For /F "Tokens=*" %%# in ('Type Archivo.txt') Do (
Set Num=%%#
Echo !Num!>"%TEMP%\Num.tmp"
FOR %%? IN ("%TEMP%\Num.tmp") DO (SET /A Longitud=%%~z? - 3)
Call :Paridad
)
Goto :FIN

:Paridad
Echo !Num:~%Longitud%,1!| Findstr "0 2 4 6 8" >NUL
If %Errorlevel% EQU 0 (Echo !Num!>>Pares.txt) ELSE (Echo !Num!>>Impares.txt)
Goto :EOF

:Fin
Echo Proceso completado...
Pause
Exit


EDITO: Aqui te dejo otro método que se me ha ocurrido más sencilla

Código
  1. @@Echo off
  2.  
  3. For /F "Tokens=1,2 delims= " %%a in ('Type Archivo.txt') Do (
  4. Set /A Divide = %%b/2, Divide = Divide*2
  5. Call :Paridad %%b
  6. IF Errorlevel 1 (Echo %%a %%b>>Impares.txt) Else (Echo %%a %%b>>Pares.txt)
  7. )
  8. Goto :FIN
  9.  
  10. :Paridad
  11. If %Divide% EQU %1 (Exit /B 0) ELSE (Exit /B 1)
  12.  
  13. :Fin
  14. Echo Proceso completado...





Sobre lo de borrar...

Código
  1. :borrar
  2. set /p borrar= Nombre del contacto a eliminar:
  3. if exist "agenda\%borrar%.bat" (goto dels) else (goto deln)
  4.  
  5. :dels
  6. del /f /s /q "G:\agenda\%borrar%.bat"

Estás seteando la variable "BORRAR", y luego buscas en el directorio (Actual) "Agenda\%borrar%.bat", Y si encuentra ese bat, lo borra...

Pues en teoría está bien, no veo nada mal, a menos que no lo estés ejecutando desde la carpeta "Agenda"...

También vas a tener que explicarmelo mejor xD

Además, no estabamos hablando de un .TXT? ¿Ahora esto trata sobre eliminar el nombre dentro del archivo texto donde están todos los registros, o sobre eliminar un ".bat" suelto?... detalles...

De todas formas prueba así...

Código
  1. set /p borrar= Nombre del contacto a eliminar:
  2. if /I exist "G:\aagenda\%borrar%.bat" (goto :dels) else (goto :deln)
  3.  
  4. :dels
  5. del /q "G:\agenda\%borrar%.bat"
  6.  
  7. :Deln

« Última modificación: 11 Marzo 2012, 11:43 am por EleKtro H@cker » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Scripts de ASP
Desarrollo Web
Cobac 9 10,320 Último mensaje 10 Julio 2010, 23:02 pm
por alkonweb
[IE] Mensajes Scripts
Dudas Generales
Julius 0.4 0 1,531 Último mensaje 19 Junio 2012, 17:51 pm
por Julius 0.4
Introduccion a los scripts.
Scripting
jemez44 3 2,728 Último mensaje 16 Noviembre 2013, 17:56 pm
por Eleкtro
imperiaonlin scripts
Scripting
karionarut 2 2,215 Último mensaje 29 Abril 2016, 10:37 am
por flony
Wireless networking watcher guardar en txt
Scripting
T.S.A 1 2,449 Último mensaje 4 Agosto 2017, 13:27 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines