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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Eliminar lineas archivo txt
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Eliminar lineas archivo txt  (Leído 3,233 veces)
Wiliam678

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Eliminar lineas archivo txt
« en: 13 Noviembre 2018, 21:19 pm »

Esta es mi primera vez en el foro y tengo un programa de una libreria por asi decirlo en batch, la cual tiene varias opciones y entre ellas una de Devolver Libros que lo que tiene que hacer es que al crearse un archivo (prestamos.txt) me borre el libro que puse. ej:

libro6
Zakaria
13/11/2018 | 14:02:36,75
libro7
Zakaria
13/11/2018 | 14:03:08,39
Quiero devolver el libro 6 por ejemplo para que me quede asi:

libro7
Zakaria
13/11/2018 | 14:03:08,39
Esto es lo que llevo por ahora:

Código
  1. @echo off
  2. color f
  3. :inicio
  4. FOR %%i IN (.\prestamos\*.txt) DO ECHO %%i
  5. ECHO Que libro desea devolver?
  6. set /p libro=
  7. echo. > .\prestamos.txt\
  8. move .\prestamos\%libro%.txt .\libros\%libro%.txt
  9. :fin

El problema esta en el echo que me borra todo.

MOD: Titulo en minusculas. Etiqueta GeSHi.


« Última modificación: 13 Noviembre 2018, 23:44 pm por MCKSys Argentina » En línea

**Aincrad**


Desconectado Desconectado

Mensajes: 682



Ver Perfil WWW
Re: Eliminar lineas archivo txt
« Respuesta #1 en: 14 Noviembre 2018, 01:57 am »

Ese Echo no te borra nada , mas bien lanza error en la sintaxis. de hecho no hace nada mas que mostrar error. y el libro si se mueve. de la carpeta prestamos a la carpeta libros. Plantea mejor tu duda. y con gusto te ayudo.



No entendí tu duda pero supongo que lo que querías era hacer un log de los archivos que quedan en la carpeta prestamos , y ademas te faltan agregar algunos condicionales ; por ejemplo en la parte que te pregunta Que libro desea Devolver?

1) si no pones nada y sigues te dará error.
2) Si el archivo no existe, también te dará error.


Bueno de todos modos aquí esta :

Código
  1. @echo off
  2. :inicio
  3. cls
  4. color a
  5. dir /b prestamos\*.txt | findstr /n ".txt$"                                
  6. (for %%x in (prestamos\*.txt) do set /a a+=1)
  7. echo/
  8. echo      Libros Actuales:  %a%
  9. echo/
  10. echo Que libro desea devolver?
  11. echo/
  12. set /p libro=  
  13. if not defined libro (goto:inicio) >NUL
  14. if not exist prestamos\%libro%.txt (goto:inicio) >NUL
  15. move .\prestamos\%libro%.txt .\libros\%libro%.txt
  16. if exist prestamos.txt del prestamos.txt
  17. For %%i in (prestamos\*.txt) do echo %%i >> prestamos.txt
  18. pause

Salida :





En línea



Wiliam678

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Eliminar lineas archivo txt
« Respuesta #2 en: 14 Noviembre 2018, 11:08 am »

Lo que quería decir es que yo tengo un archivo txt de los libros prestados y quiero que cuando devuelva los libros prestados me lo elimine del archivo prestamos.txt de tal forma que me borre o elimine el libro 6 junto con el nombre y la fecha de tal forma que me queden solo los prestados como aquí en el caso de prestar el libro 6 y 7, y devolver el 6:
libro7
Zakaria
13/11/2018 | 14:03:08,39
PD: Tambien me sirve remplazarlo o cualquier otra manera siempre que me quede de esa manera
PD: El codigo que me pasaste esta mas o menos bien, lo unico que en lugar de la ruta quiero que me deje lo del libro, el nombre y la fecha
« Última modificación: 14 Noviembre 2018, 11:44 am por Wiliam678 » En línea

**Aincrad**


Desconectado Desconectado

Mensajes: 682



Ver Perfil WWW
Re: Eliminar lineas archivo txt
« Respuesta #3 en: 14 Noviembre 2018, 20:21 pm »

Lo que entendí es que tienes un archivo "Prestamo.txt" en la cual están registrados los libros tales como :

Código:
libro6 
Zakaria
13/11/2018 | 14:02:36,75

libro7
Zakaria
13/11/2018 | 14:03:08,39

Lo que quieres con el Bat es que cuando Muevas el Libro6.txt también se borre del "Prestamo.txt" . Bueno hay varias maneras (Complicadas) de hacer esto.

1) La Primera es Buscar en "Prestamo.txt" la Palabra "Libro6" y eliminar esa linea con las dos de abajo que le siguen. así quedaría solo el LIBRO7.

2) La Segunda es Modificar el Log que te hice en el código anterior, una manera simple y sencilla


Bueno hare la segunda manera , me es mas facil.




Toma:

Código
  1. @echo off
  2. :inicio
  3. cls
  4. color a
  5. dir /b prestamos\*.txt | findstr /n ".txt$"                                
  6. (for %%x in (prestamos\*.txt) do set /a a+=1)
  7. echo/
  8. echo      Libros Actuales:  %a%
  9. echo/
  10. echo Que libro desea devolver?
  11. echo/
  12. set /p libro=  
  13. if not defined libro (goto:inicio) >NUL
  14. if not exist prestamos\%libro%.txt (goto:inicio) >NUL
  15. move .\prestamos\%libro%.txt .\libros\%libro%.txt
  16.  
  17. :log
  18. if exist prestamos.txt del prestamos.txt
  19. For %%i in (prestamos\*.txt) do (echo %%i & type %%i & echo/ & echo/ ) >> prestamos.txt
  20. goto :Eof

En línea



Wiliam678

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Eliminar lineas archivo txt
« Respuesta #4 en: 14 Noviembre 2018, 21:11 pm »

Agradezco sinceramente tu aportacion, la verdad me has ayudado bastante ;-), pero no es del todo lo que buscaba lo que quiero hacer es que en lo de libros:
libro6
Zakaria
13/11/2018 | 14:02:36,75

libro7
Zakaria
13/11/2018 | 14:03:08,39

no me lo deje asi:
prestamos\libro7.txt

SINO asi:
libro7
Zakaria
13/11/2018 | 14:03:08,39
ES decir que solo me quite lo del libro con su fecha y nombre correspondiente
Un saludo y gracias de nuevo
 
En línea

**Aincrad**


Desconectado Desconectado

Mensajes: 682



Ver Perfil WWW
Re: Eliminar lineas archivo txt
« Respuesta #5 en: 15 Noviembre 2018, 00:02 am »

Hubieras Simplemente dicho esto sin rodeos desde un principio, toma :

Código
  1. @echo off
  2. :inicio
  3. cls
  4. color a
  5. dir /b prestamos\*.txt | findstr /n ".txt$"                                
  6. (for %%x in (prestamos\*.txt) do set /a a+=1)
  7. echo/
  8. echo      Libros Actuales:  %a%
  9. echo/
  10. echo Que libro desea devolver?
  11. echo/
  12. set /p libro=  
  13. if not defined libro (goto:inicio) >NUL
  14. if not exist prestamos\%libro%.txt (goto:inicio) >NUL
  15. move .\prestamos\%libro%.txt .\libros\%libro%.txt
  16.  
  17. :log
  18. if exist prestamos.txt del prestamos.txt
  19. for %%i in ("prestamos\*.txt") do (
  20.        echo %%~nxi
  21.        type %%i
  22.        echo/
  23.        echo/
  24.    )>> prestamos.txt
  25. goto :Eof

Esto si te lo deja asi :

Código:
libro8.txt 
Zakaria 2
13/11/2018 | 14:03:08,39

Nota: Si queréis eliminarle el .txt hazlo tu ya te he hecho bastante.


En línea



Wiliam678

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Eliminar lineas archivo txt
« Respuesta #6 en: 15 Noviembre 2018, 09:29 am »

Ya se que me explique mal, pero no sabia como explicarlo. El código que me pasaste hace básicamente lo mismo que el anterior
Me pone esto:
Código:
libro8.txt
y yo quiero que me quede esto
Código:
libro8.txt 
Zakaria 2
13/11/2018 | 14:03:08,39
A mi me da igual si elimina el txt o no
Este programa tiene diferentes opciones: Ver libros,Prestar libros, Devolverlos y Ver libros prestados
Aquí tenéis el código de la opción prestar libros:
Código:
@echo off
:inicio
color f
set /p NOMBRE= El nombre de usuario es %NOMBRE%? Si lo es presione enter, sino escribalo
ECHO QUE LIBRO DESEA PRESTAR?
FOR %%i IN (.\libros\*.txt) DO ECHO %%i
ECHO Que libro desea prestar?
set /p libro=
echo %libro%>> .\prestamos.txt
echo %NOMBRE%>> .\prestamos.txt
echo %DATE% ^| %TIME%>> .\prestamos.txt
move .\libros\%libro%.txt .\prestamos\%libro%.txt
:fin

PD: Gracias de nuevo
« Última modificación: 15 Noviembre 2018, 09:37 am por Wiliam678 » En línea

**Aincrad**


Desconectado Desconectado

Mensajes: 682



Ver Perfil WWW
Re: Eliminar lineas archivo txt
« Respuesta #7 en: 15 Noviembre 2018, 12:04 pm »

Hablemos esto por mensajes Privados , no quiero llenar este post con mensajes. me puedes pasar tu código completo por privado y te echo una mano.
En línea



Wiliam678

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Eliminar lineas archivo txt
« Respuesta #8 en: 15 Noviembre 2018, 14:14 pm »

YA esta solucionado el problema, era mas sencillo de lo que pensaba, lo que hize fue en la opcion Prestar libros cambiar y en lugar de:
Código:
libro6 
Zakaria
13/11/2018 | 14:02:36,75

Hacerlo asi:
Código:
libro6 - Zakaria - 15/11/2018 | 14:08:20,04

Para usar el comando findstr para eliminar el libro con la linea entera sin necesidad de hacer mas:

Código:
@echo off
:inicio
cls
color f
FOR %%i IN (.\prestamos\*.txt) DO ECHO %%i
ECHO Que libro desea devolver?
set /p libro=
findstr /V "%libro%" prestamos.txt > prestamos2.txt
del prestamos.txt
ren prestamos2.txt prestamos.txt
move .\prestamos\%libro%.txt .\libros\%libro%.txt
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Eliminar lineas en Blanco de un TXT
Programación C/C++
Jupiter34 7 10,118 Último mensaje 29 Octubre 2012, 17:02 pm
por rir3760
Eliminar espacios lineas archivo de texto
Scripting
Shuffle66 7 8,294 Último mensaje 18 Julio 2013, 11:48 am
por Shuffle66
Eliminar lineas que no cumplan condición
Scripting
Afkael 4 3,204 Último mensaje 2 Junio 2014, 16:28 pm
por Afkael
Eliminar todo menos 100 líneas
Bases de Datos
dimitrix 4 3,132 Último mensaje 7 Enero 2016, 14:20 pm
por Shell Root
Ayuda python,eliminar lineas de un archivo una por una
Scripting
Panic0 4 5,312 Último mensaje 8 Marzo 2021, 23:49 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines