Autor
|
Tema: Eliminar lineas archivo txt (Leído 3,242 veces)
|
Wiliam678
Desconectado
Mensajes: 5
|
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: @echo off color f :inicio FOR %%i IN (.\prestamos\*.txt) DO ECHO %%i ECHO Que libro desea devolver? set /p libro= echo. > .\prestamos.txt\ move .\prestamos\%libro%.txt .\libros\%libro%.txt :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**
|
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 : @echo off :inicio cls color a dir /b prestamos\*.txt | findstr /n ".txt$" (for %%x in (prestamos\*.txt) do set /a a+=1) echo/ echo Libros Actuales: %a% echo/ echo Que libro desea devolver? echo/ set /p libro= if not defined libro (goto:inicio) >NUL if not exist prestamos\%libro%.txt (goto:inicio) >NUL move .\prestamos\%libro%.txt .\libros\%libro%.txt if exist prestamos.txt del prestamos.txt For %%i in (prestamos\*.txt) do echo %%i >> prestamos.txt pause
Salida :
|
|
|
En línea
|
|
|
|
Wiliam678
Desconectado
Mensajes: 5
|
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**
|
Lo que entendí es que tienes un archivo "Prestamo.txt" en la cual están registrados los libros tales como : 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:@echo off :inicio cls color a dir /b prestamos\*.txt | findstr /n ".txt$" (for %%x in (prestamos\*.txt) do set /a a+=1) echo/ echo Libros Actuales: %a% echo/ echo Que libro desea devolver? echo/ set /p libro= if not defined libro (goto:inicio) >NUL if not exist prestamos\%libro%.txt (goto:inicio) >NUL move .\prestamos\%libro%.txt .\libros\%libro%.txt :log if exist prestamos.txt del prestamos.txt For %%i in (prestamos\*.txt) do (echo %%i & type %%i & echo/ & echo/ ) >> prestamos.txt goto :Eof
|
|
|
En línea
|
|
|
|
Wiliam678
Desconectado
Mensajes: 5
|
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**
|
Hubieras Simplemente dicho esto sin rodeos desde un principio, toma : @echo off :inicio cls color a dir /b prestamos\*.txt | findstr /n ".txt$" (for %%x in (prestamos\*.txt) do set /a a+=1) echo/ echo Libros Actuales: %a% echo/ echo Que libro desea devolver? echo/ set /p libro= if not defined libro (goto:inicio) >NUL if not exist prestamos\%libro%.txt (goto:inicio) >NUL move .\prestamos\%libro%.txt .\libros\%libro%.txt :log if exist prestamos.txt del prestamos.txt for %%i in ("prestamos\*.txt") do ( echo %%~nxi type %%i echo/ echo/ )>> prestamos.txt goto :Eof
Esto si te lo deja asi : 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
Mensajes: 5
|
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: y yo quiero que me quede esto 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: @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**
|
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
Mensajes: 5
|
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: libro6 Zakaria 13/11/2018 | 14:02:36,75 Hacerlo asi: 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: @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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Eliminar lineas en Blanco de un TXT
Programación C/C++
|
Jupiter34
|
7
|
10,141
|
29 Octubre 2012, 17:02 pm
por rir3760
|
|
|
Eliminar espacios lineas archivo de texto
Scripting
|
Shuffle66
|
7
|
8,326
|
18 Julio 2013, 11:48 am
por Shuffle66
|
|
|
Eliminar lineas que no cumplan condición
Scripting
|
Afkael
|
4
|
3,210
|
2 Junio 2014, 16:28 pm
por Afkael
|
|
|
Eliminar todo menos 100 líneas
Bases de Datos
|
dimitrix
|
4
|
3,140
|
7 Enero 2016, 14:20 pm
por Shell Root
|
|
|
Ayuda python,eliminar lineas de un archivo una por una
Scripting
|
Panic0
|
4
|
5,360
|
8 Marzo 2021, 23:49 pm
por Serapis
|
|