Como comparo, elimino y modifico una línea en un txt desde batch
La idea es que cuando se ingrese un numero, compare si existe o no y de un mensaje de error si esta duplicado, dejo algo del código:
Echo "Cedula"
set /p cedula=
for /f "tokens=6 delims=," %%a in ('type C:\alumnoslista.txt ^|find "%cedula%"') do
(echo %%a==%cedula%) else ( echo esta duplicado)
Tal como lo has escrito te tiene que dar error de sintaxis. El DO de un FOR no tiene cláusula ELSE.
Parece que tu archivo ALUMNOSLISTA.TXT consta de campos separados por comas y que es el sexto campo el que te interesa comparar con el valor solicitado. Si ocurre así, ¿qué es lo que quieres hacer? Supongo que es, en ese caso, cuando se te ofrecen esas posibilidades de eliminar o modificar. Vamos, de momento, a ver como comprobamos, simplemente, que hemos localizado la línea adecuada:
@echo off set /p cedula=Cedula: for /f "tokens=1,2,3,4,5,6,* delims=," %%a in ('type alumnoslista.txt ^|find "%cedula%"') do ( if %%f==%cedula% echo el registro %%a,%%b,%%c,%%d,%%e,%%f,%%g tiene la cedula %cedula% )
A partir de aquí ya podemos empezar a trabajar, creo yo
le realice unas modificaciones :
@echo off
echo "Cedula"
set /p cedula=
for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\alumnoslista.txt ^|findstr /x "%cedula%"') do (
if %%f==%cedula% echo el registro %%a,%%b,%%c,%%d,%%e,%%f,%%g ESTA DUPLICADO...!
echo.
echo ingrese nuevo usuario
goto:dupli
)
else (
goto:cont
)
El problema es que "ELSE" me da error
Bueno actualizo, pude realizar el cometido dejo el código
Echo "Cedula"
set /p cedula=
for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\alumnoslista.txt ^|find "%cedula%"') do (
if %%f==%cedula% echo La Cedula - %cedula% Esta Duplicada
echo Corresponde a %%a,%%b,%%c,%%d,%%e,%%f,%%g
echo.
goto dupli
)
Me resta saber como puedo eliminar el registro, de este txt estilo cvs
Respecto a los errores con el ELSE del IF realmente la sintaxis del IF/ELSE en MSDOS es muy "exigente". Te recomiendo que veas la ayuda (tecleando IF /? en una ventana CMD o que te bases en un comando IF/ELSE que funcione en otro BAT.
Veo que ahora has pasado al ";" como separador de campos, coherente con que estés tratando archivos tipo CSV en español.
En cuanto a eliminar un registro/fila en un archivo, mediante un BAT, creo que la única posibilidad es crear un nuevo archivo en el que vayas escribiendo todas las filas, salvo la que quieras eliminar. Si además de indicar que está duplicado quieres borrar ese registro (es decir, no copiarlo al archivo de salida) te sugiero que pruebes con esto:
@echo off del /q kkk.txt>nul 2>&1 echo "Cedula" set /p cedula= for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type alumnoslista.txt') do ( if %%f==%cedula% ( echo La Cedula - %cedula% Esta Duplicada echo Corresponde a %%a;%%b;%%c;%%d;%%e;%%f;%%g echo. ) else echo %%a;%%b;%%c;%%d;%%e;%%f;%%g>>kkk.txt )
De esta manera en el archivo temporal/auxiliar KKK.TXT estarían todos los registros menos los que tienen en el sexto campo el valor indicado para "Cedula". Si luego quieres reescribir el archivo de partida (ALUMNOSLISTA.TXT) puedes añadir, al final del BAT, fuera del bucle FOR, el comando:
Copy /y tmp.txt alumnoslista.txt>nul
Te sugiero que utilices la herramienta "<>" de la página ("snippet") para presentar el código del BAT. Creo que resulta más legible, al separar el código del texto y comentarios.
Por cierto, te he incluido un ejemplo de ELSE que si que funciona.
muchas gracias funciono correctamente, pero te pido si me dices para que sirve
del /q kkk.txt>nul 2>&1
y el ">nul" al final
Copy /y tmp.txt alumnoslista.txt>nul
y
echo %%a;%%b;%%c;%%d;%%e;%%f;%%g>>kkk.txt
desde ya gracias, solo me queda modificar, te solicito esta ultima ayuda
El 2>&1 redirige la salida de errores (salida 2) a la salida 1 (salida normal). Como se está diciendo que el resultado del borrado (salida normal) se dirija a NUL significa que tanto la salida 1 como la 2 se ignoran. Esto hace que se haga el borrado del archivo KKK.TXT sin que dé ningún mensaje de error tanto si existe como si no existe.
En el segundo caso el ">nul" suprime también los mensajes que pudiera originar el comando COPY.
Por último el ECHO recrea la línea leída reponiendo los ";" que, al usarse como delimitadores de campo, no se incorporan a ninguna de las variables. Las variables %%a hasta %%f son los tokens 1 a 6 respectivamente y %%g el token * que significa lo que queda de la línea después de campo 6. El ">>kkk.txt" indica que se añada el resultado de ese ECHO al archivo KKK.TXT. En resumen que ese comando añade la línea al final de ese archivo. Si se pusiera ">kkk.txt" se reescribiría el KKK.TXT con el contenido de la línea correspondiente cada vez, con lo que al final solo tendría la última línea.
En cuanto a "modificar" solo tienes que saber que campo o campos quieres modificar y en que situación.
Lo que no me queda claro, que línea de comando borra el registro o hace que no pase a kkk.txt
Si pudieras aclarar me eso, gracias
Reescribo aquí el IF completo:
if %%f==%cedula% ( echo La Cedula - %cedula% Esta Duplicada echo Corresponde a %%a;%%b;%%c;%%d;%%e;%%f;%%g echo. ) Else echo %%a;%%b;%%c;%%d;%%e;%%f;%%g>>kkk.txt
Si %%f (sexto campo) tiene el mismo valor que "cedula" se presenta el mensaje de duplicación y el registro en el que ocurre (que es la línea en tratamiento) pero no se hace nada más. En cambio si %%f tiene un valor distinto del de "cedula" se ejecuta el ELSE que graba la línea en KKK.TXT.
para modificar e echo este codigo
@echo off
:alumnomodi
echo Digite Cedula a modificar
set /p cedula=
for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\alumnoslista.txt') do (
if %%f==%cedula% (
echo el registro %%a,%%b,%%c,%%d,%%e,%%f,%%g
echo "Nombre"
set /p nombre=
echo.
echo "Apellido"
set /p apellido=
echo.
echo "Edad"
set /p edad=
echo %%a;"%nombre%";"%apellido%";%edad%;%date%;%cedula%;>>C:\kkk.txt
) else echo %%a;%%b;%%c;%%d;%%e;%%f;%%g;>>C:\kkk.txt
)
pause
goto alumnomodi
el problema es que no graba de primera solo si le das enter enter enter y dejas en blanco nombre apellido y edad, de esa manera toma lo que anterior mente cargastes, entonces si lo guarda.. gracias
No entiendo bien lo que dices. En primer lugar el bat debería ser algo así:
@echo off Setlocal EnableDelayedExpansion del /q c:\kkk.txt>nul 2>&1 :Alumnomodi Echo Digite Cedula a modificar set /p cedula= for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type c:\alumnoslista.txt') do ( if %%f==%cedula% ( echo el registro %%a,%%b,%%c,%%d,%%e,%%f,%%g echo "Nombre" set /p nombre= echo. echo "Apellido" set /p apellido= echo. echo "Edad" set /p edad= echo %%a;"!nombre!";"!apellido!";!edad!;%date%;%%f;%%g>>c:\kkk.txt ) else echo %%a;%%b;%%c;%%d;%%e;%%f;%%g>>c:\kkk.txt ) pause goto alumnomodi
Las variables que cambian dentro de un bucle FOR obligan a utilizar el comando "Setlocal EnableDelayedExpansion" y hay que refererirse a ellas con el nombre entre "!" en lugar de hacerlo entre "%". Luego tu forma de pedir los datos obliga a terminarlos con un Enter. Por último, tal como está planteado, cada vez que se pide la "cedula" se vuelve a tratar todo el archivo original, sin contemplar las modificaciones de los pasos anteriores. Para salvar esto habría que reescribirlo antes de efectuar otra "pasada". El comando sería como el del día 10, pero bien escrito porque ahí se reescribía con un archivo de nombre TMP.TXT en lugar de hacerlo con el KKK.TXT:
copy /y c:\kkk.txt c:\alumnoslista.txt>nul
Bueno ya casi finalizando, no logro que me copie todas los demás datos e el txt, paso código
@echo off Setlocal EnableDelayedExpansion :Alumnomodi Echo Digite Cedula a modificar set /p cedula= for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type c:\alumnoslista.txt') do ( if %%f==%cedula% ( echo el registro %%a,%%b,%%c,%%d,%%e,%%f,%%g echo "Seleccione Curso" echo. echo "1" Electronica echo "2" T.Mantenimiento echo "3" Sis.Oerativo set /p opc= if (%opc% equ 1 set curso=Electronica) if (%opc% equ 2 set curso=T.Mantenimiento) if (%opc% equ 3 set curso=Sis.Oerativo) echo "Nombre" set /p nombre= Echo. echo "Apellido" set /p apellido= echo. echo "Edad" set /p edad= echo "Cedula" set /p cedula= echo !curso!;!nombre!;!apellido!;!edad!;%date%;!cedula!;>>c:\kkk.txt ) else echo %%a;%%b;%%c;%%d;%%e;%%f;%%g>>c:\kkk.txt ) Pause goto alumnomodi
Agradezco su ayuda
Respecto a esto te sugiero lo modifiques para que sea algo así:
@echo off Setlocal EnableDelayedExpansion :Alumnomodi Echo Digite Cedula a modificar set /p cedula= for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type c:\alumnoslista.txt') do ( if %%f==%cedula% ( echo el registro %%a,%%b,%%c,%%d,%%e,%%f,%%g echo "Seleccione Curso" echo. echo "1" Electronica echo "2" T.Mantenimiento echo "3" Sis.Operativo set /p opc= if !opc!==1 set curso=Electronica if !opc!==2 set curso=T.Mantenimiento if !opc!==3 set curso=Sis.Operativo echo "Nombre" set /p nombre= Echo. echo "Apellido" set /p apellido= echo. echo "Edad" set /p edad= echo "Cedula" set /p cedula= echo !curso!;!nombre!;!apellido!;!edad!;%date%;!cedula!>>c:\kkk.txt ) else echo %%a;%%b;%%c;%%d;%%e;%%f;%%g>>c:\kkk.txt ) Pause goto alumnomodi
Buenos dias, eh finalizado con el programa, adjunto letra del problema y codigo, espero que ayude a quien lo necesite.
Una institución educativa desea crear un ABMBL (Alta, Baja, Modificación, Búsqueda y Listado) de cuatro categorías distintas: Alumnos, Docentes, Materias y Cursos.
Al inicio del programa se desplegará un menú principal que mostrará las siguientes opciones:
- ABMBL Alumnos
- ABMBL Docentes
- ABMBL Materias
- ABMBL Curso
- Salir
En caso de seleccionar una opción que no pertenece al menú se le mostrará un mensaje de error.
De los alumnos se sabe que:
Todos los alumnos deberán tener un curso asignado que deberá ser registrado previamente en la categoría Cursos. Los alumnos solo se podrán inscribir solo a un curso. De los alumnos se desea guardar su nombre, apellido, edad, curso al que está inscripto, año de la inscripción y cédula de identidad. No podrán existir dos alumnos con la misma cédula de identidad y solo habrá un registro por alumno.
De los docentes se sabe que:
Todos los docentes deberán impartir una materia que deberá ser registrado previamente en la categoría Materias. Los docentes pueden impartir solo una materia. De los docentes se desea guardar su nombre, apellido, edad, materia que imparte y cédula de identidad. No podrán existir dos docentes con la misma cédula de identidad y solo habrá un registro por docente
De las materias se sabe que:
Todas las materias deberán pertenecer al menos a un curso que deberá ser registrado previamente en Cursos. De las materias se desea guardar su nombre, carga horaria, curso al que pertenece y código de identificación. No podrán existir dos materias con el mismo código que pertenezcan al mismo curso.
De los cursos se sabe que:
Se desea guardar su nombre, año, fecha de inicio, fecha de finalización y código de identificación. No podrán existir dos cursos con el mismo código de identificación dentro de un mismo año.
Al elegir cada una de las opciones del menú (excepto la de salir que será la única forma de finalizar el programa) se desplegará el siguiente submenú de acuerdo con la opción seleccionada:
- Alta
- Baja
- Modificación
- Listado
- Atrás
La opción 1 solicitara al usuario el ingreso de los datos ya mencionados para la categoría seleccionada y los guardara en un archivo.
La opción 2 solicitara al usuario el ingreso de el/los datos que identifican a la categoría y eliminara el archivo que corresponde al registro siempre que este exista sino desplegara un error/advertencia.
La opción 3 solicitara al usuario el ingreso de el/los que identifican a la categoría, buscara que exista el registro de los mismos en caso de ser así desplegara los datos del mismo y solicitara el resto de los datos para luego guardar el registro modificado, sino desplegara un error/advertencia.
La opción 4 listará todos los datos de los elementos registrados en la categoría seleccionada.
La opción 5 volverá al menú anterior
En caso de seleccionar una opción que no pertenece al menú se le mostrará un mensaje de error.
@echo off :inicio set opc=0 :error :menuprincipal cls ::---------------menu principal------------------ echo "Bienvenido" echo. echo "Ingrese Opcion" echo. echo. echo "1" - ABMBL Alumnos echo "2" - ABMBL Docentes echo "3" - ABMBL Materias echo "4" - ABMBL Curso echo "5" - Salir set /p opc= if %opc% equ 1 goto :con if %opc% equ 2 goto :con if %opc% equ 3 goto :con if %opc% equ 4 goto :con if %opc% equ 5 goto :con cls goto :error :con if %opc% equ 1 goto :ABMBLAlumnos if %opc% equ 2 goto :ABMBLDocentes if %opc% equ 3 goto :ABMBLMaterias if %opc% equ 4 goto :ABMBLCurso if %opc% equ 5 goto :exit ::---------------------fin del menu----------------- ::---------------------menu de alumno: alta,baja,modificacion,lista------------------ :ABMBLAlumnos cls echo Menu Alumnos echo. echo "1" - Alta echo "2" - Baja echo "3" - Modificacion echo "4" - Listado echo "5" - Busqueda echo "6" - Atras set /p opc= if %opc% equ 1 goto :conalumno if %opc% equ 2 goto :conalumno if %opc% equ 3 goto :conalumno if %opc% equ 4 goto :conalumno if %opc% equ 5 goto :conalumno if %opc% equ 6 goto :conalumno :conalumno if %opc% equ 1 goto :alumnoalta if %opc% equ 2 goto :alumnobaja if %opc% equ 3 goto :alumnomodi if %opc% equ 4 goto :alumnolista if %opc% equ 5 goto :alumnobusca if %opc% equ 6 goto :menuprincipal pause cls ::-------------------------nuevo alumno------------------------ :alumnoalta cls ::-------------------------menu curso------------------------------------------ echo "Seleccione Curso" echo. type c:\cursolista.txt echo. echo. echo Ingrese Codigo de Curso set /p curso= ::-------------------------fin menu curso-------------------------------------------- echo. echo "Nombre" set /p nombre= echo. echo "Apellido" set /p apellido= echo. echo "Edad" set /p edad= echo. echo "Cedula" set /p cedula= :: for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\alumnoslista.txt ^|find "%cedula%"') do ( if %%f==%cedula% echo La Cedula - %cedula% Esta Duplicada...! echo Corresponde a %%a;%%b;%%c;%%d;%%e;%%f;%%g echo. pause goto duplialumno ) echo %curso%;%nombre%;%apellido%;%edad%;%date%;%cedula% echo %curso%;%nombre%;%apellido%;%edad%;%date%;%cedula%;>>c:\alumnoslista.txt pause cls :duplialumno echo Desa ingresar otro docente echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :alumnoalta if %opc% equ 2 goto :ABMBLAlumnos ::-------------------fin nuevo alumno------------------------------------------------- ::------------------------alumno busca------------------------------------------------- ::------------------dar de baja al alumno------------------------ :alumnobaja cls echo Dar de baja alumno echo. echo Ingrese cedula a borrar set /p cedula= ::--------------empiza comprobacion si existe la cedula------------ for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\alumnoslista.txt ^|find "%cedula%"') do ( if %%f==%cedula% ( goto continuaalumno ) else goto noexistealumno ) :noexistealumno echo cedula %cedula% no existe pause goto :menu1 ::------------fin comprobacion----------------- :continuaalumno ::-------------borra alumno-------------- for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\alumnoslista.txt') do ( if %%f==%cedula% ( echo La Cedula - %cedula% echo. echo Se elimino alumno %%a;%%b;%%c;%%d;%%e;%%f;%%g echo. ) else echo %%a;%%b;%%c;%%d;%%e;%%f;%%g>>C:\kkk.txt ) Copy /y C:\kkk.txt C:\alumnoslista.txt>nul del /q C:\kkk.txt pause cls ::------------menu1----------------- :menu1 cls echo Desea dar de baja otro alumno echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :con2 if %opc% equ 2 goto :con2 cls :con2 if %opc% equ 1 goto :alumnobaja if %opc% equ 2 goto :ABMBLAlumnos pause cls ::-------------fin menu1------------------- ::-------------------------fin dar de baja alumno------------------------ ::-------------------------modificar alumno------------------------------------------------- :alumnomodi cls Setlocal EnableDelayedExpansion Echo Digite Cedula a modificar set /p cedula= ::-------------------------------- for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\alumnoslista.txt ^|find "%cedula%"') do ( if %%f==%cedula% ( goto continuaalumno1 ) else goto noexistealumno1 ) :noexistealumno1 echo cedula %cedula% no existe pause goto :menu2 ::----------menu ---------------------- :menu2 cls echo Desea modificar otro alumno echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :conmodalum if %opc% equ 2 goto :conmodalum cls :conmodalum if %opc% equ 1 goto :alumnomodi if %opc% equ 2 goto :ABMBLAlumnos ::---------------fin de menu------------------ :continuaalumno1 for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type c:\alumnoslista.txt') do ( if %%f==%cedula% ( echo el registro %%a,%%b,%%c,%%d,%%e,%%f,%%g ::-------------------------menu curso------------------------------------------ echo. echo "Seleccione Curso" echo. type c:\cursolista.txt echo. echo. echo Ingrese Codigo de Curso set /p curso= echo. ::-------------------------fin menu curso-------------------------------------------- echo "Nombre" set /p nombre= Echo. echo "Apellido" set /p apellido= echo. echo "Edad" set /p edad= echo "Cedula" set /p cedula= echo Se guardo !curso!;!nombre!;!apellido!;!edad!;%date%;!cedula! pause echo !curso!;!nombre!;!apellido!;!edad!;%date%;!cedula!>>c:\kkk.txt ) else echo %%a;%%b;%%c;%%d;%%e;%%f;%%g>>c:\kkk.txt ) Copy /y C:\kkk.txt C:\alumnoslista.txt>nul del /q C:\kkk.txt cls echo Desea modificar otro Docente echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :conalumno1 if %opc% equ 2 goto :conalumno1 cls goto :error :conalumno1 if %opc% equ 1 goto :alumnomodi if %opc% equ 2 goto :ABMBLAlumnos cls ::----------------------------fin de modificar alumno------------------------------------ ::----------------------------------Listar alumnos---------------------------------- :alumnolista cls for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in (C:\alumnoslista.txt) do ( echo Curso:%%a; Nombre:%%b; Apellido:%%c; Edad:%%d; F.I:%%e; C.I:%%f; ) pause goto :ABMBLAlumnos ::---------------------------------fin de lista-------------------------------------- ::---------------------------------busqueda de alumno----------------------------------- :alumnobusca cls echo Ingrese cedula que desa buscar echo. echo "Cedula" set /p cedula= echo. for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\alumnoslista.txt ^|find "%cedula%"') do ( if %%f==%cedula% ( goto buscaalumno1 ) else goto noexistealumno1 ) :noexistealumno1 echo Alumno con cedula %cedula% no existe echo. pause goto buscaalumno2 :buscaalumno1 for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\alumnoslista.txt ^|find "%cedula%"') do ( if %%f==%cedula% echo Curso:%%a; Nombre:%%b; Apellido:%%c; Edad:%%d; F.I:%%e; C.I:%%f; ) pause :buscaalumno2 echo. echo Desa buscar otro alumno echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :alumnobusca if %opc% equ 2 goto :ABMBLAlumnos ::-----------------------------fin de busqueda alumno------------------------------------ ::-------------------------------------------------------------------------------------- ::-----------------------------menu docente------------------------------------------- :ABMBLDocentes cls echo Menu Docente echo. echo "1" - Alta echo "2" - Baja echo "3" - Modificacion echo "4" - Listado echo "5" - Busqueda echo "6" - Atras set /p opc= if %opc% equ 1 goto condocente if %opc% equ 2 goto condocente if %opc% equ 3 goto condocente if %opc% equ 4 goto condocente if %opc% equ 5 goto condocente if %opc% equ 6 goto condocente :condocente if %opc% equ 1 goto docentealta if %opc% equ 2 goto docentebaja if %opc% equ 3 goto docentemodi if %opc% equ 4 goto docentelista if %opc% equ 5 goto docentebusca if %opc% equ 6 goto menuprincipal pause cls ::-------------------fin de menu docente--------------------------- ::----------------------nuevo docente---------------------- :docentealta cls echo "Nuevo Docente" echo. echo. :duplicon ::-------------------------menu materias------------------------------------------ echo "Seleccione Materia" echo. type c:\materialista.txt echo. echo. echo Ingrese Codigo de Materia set /p materia= ::-------------------------fin menu materias-------------------------------------------- echo. echo "Nombre" set /p nombre= echo. echo "Apellido" set /p apellido= echo. echo "Edad" set /p edad= echo. echo "Cedula" set /p cedula= ::-------------------------comprobar si esta duplicada la cedula------------------ for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\docenteslista.txt ^|find "%cedula%"') do ( if %%f==%cedula% echo La Cedula - %cedula% Esta Duplicada...! echo Corresponde a %%a;%%b;%%c;%%d;%%e;%%f;%%g echo. pause goto duplidocente ) echo. echo %materia%;%nombre%;%apellido%;%edad%;%date%;%cedula% echo %materia%;%nombre%;%apellido%;%edad%;%date%;%cedula%;>>c:\docenteslista.txt pause cls :duplidocente echo Desa ingresar otro docente echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :duplicon if %opc% equ 2 goto :ABMBLDocentes ::------------------fina de nuevo docente--------------------------- ::----------------------------------------------------------------- ::-------------------dar de baja docente--------------------------- :docentebaja cls echo Dar de baja Docente echo. echo Ingrese cedula a borrar set /p cedula= ::--------------empiza comprobacion si existe la cedula------------ for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\docenteslista.txt ^|find "%cedula%"') do ( if %%f==%cedula% ( goto continuadocente ) else goto noexistedocente ) :noexistedocente echo Docente con cedula N %cedula% no existe pause goto :menudocente ::------------fin comprobacion----------------- :continuadocente ::-------------borra docente-------------- for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\docenteslista.txt') do ( if %%f==%cedula% ( echo La Cedula - %cedula% echo. echo Se elimino Docente %%a;%%b;%%c;%%d;%%e;%%f;%%g echo. ) else echo %%a;%%b;%%c;%%d;%%e;%%f;%%g>>C:\kkk.txt ) Copy /y C:\kkk.txt C:\docenteslista.txt>nul del /q C:\kkk.txt pause cls ::------------menu docente----------------- :menudocente cls echo Desea dar de baja otro Docente echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :condocente if %opc% equ 2 goto :condocente cls :condocente if %opc% equ 1 goto :docentebaja if %opc% equ 2 goto :ABMBLDocentes pause cls ::------------------------fin menu docente------------------------------------------- ::-------------------------------------------------------------------------------------- ::-------------------------modificar docente------------------------------------------------- :docentemodi cls Setlocal EnableDelayedExpansion Echo Digite Cedula a modificar set /p cedula= ::------------------------------ for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\docenteslista.txt ^|find "%cedula%"') do ( if %%f==%cedula% ( goto continuadocente3 ) else goto noexistedocente3 ) :noexistedocente3 echo Docente con cedula N %cedula% no existe pause cls goto :menudocentemod ::------------fin comprobacion----------------- :continuadocente3 ::---------------- for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type c:\docenteslista.txt') do ( if %%f==%cedula% ( echo el registro %%a,%%b,%%c,%%d,%%e,%%f,%%g echo. echo. echo "Seleccione Materia" echo. type c:\materialista.txt echo. echo. echo Ingrese Codigo de Materia set /p materia= echo. echo "Nombre" set /p nombre= Echo. echo "Apellido" set /p apellido= echo. echo "Edad" set /p edad= echo "Cedula" set /p cedula= echo Se guarda: !materia!;!nombre!;!apellido!;!edad!;%date%;!cedula! pause echo !materia!;!nombre!;!apellido!;!edad!;%date%;!cedula!>>c:\kkk.txt ) else echo %%a;%%b;%%c;%%d;%%e;%%f;%%g>>c:\kkk.txt ) Copy /y C:\kkk.txt C:\docenteslista.txt>nul del /q C:\kkk.txt cls :menudocentemod echo Desea modificar otro Docente echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :condocente1 if %opc% equ 2 goto :condocente1 cls goto :error :condocente1 if %opc% equ 1 goto :docentemodi if %opc% equ 2 goto :ABMBLDocentes ::-------------------------fin de modificar docente------------------------------------------- ::---------------------------listar docente-------------------------------------------------- :docentelista cls for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in (C:\docenteslista.txt) do ( echo Materia:%%a; Nombre:%%b; Apellido:%%c; Edad:%%d; F.I:%%e; C.I:%%f; ) pause goto :ABMBLDocentes ::-----------------------------------fin de listado docente------------------------------------------- ::---------------------------busqueda de docente------------------------------------------------- :docentebusca cls echo Ingrese cedula que desa buscar echo. echo "Cedula" set /p cedula= echo. for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\docenteslista.txt ^|find "%cedula%"') do ( if %%f==%cedula% ( goto buscadocente1 ) else goto noexistedocente1 ) :noexistedocente1 echo Docente con cedula %cedula% no existe echo. pause goto buscadocente2 :buscadocente1 for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\docenteslista.txt ^|find "%cedula%"') do ( if %%f==%cedula% echo Materia:%%a; Nombre:%%b; Apellido:%%c; Edad:%%d; F.I:%%e; C.I:%%f; ) pause :buscadocente2 echo. echo Desa buscar otro Docente echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :docentebusca if %opc% equ 2 goto :ABMBLDocentes ::----------------------fin de busqueda docente----------------------------------------- ::----------------------fin de busqueda docente----------------------------------------- ::---------------------------------------------------------------------------------------------- ::----------------------------nueva materia------------------------------------------------------ :ABMBLMaterias cls echo Menu Materia echo. echo "1" - Alta echo "2" - Baja echo "3" - Modificacion echo "4" - Listado echo "5" - Busqueda echo "6" - Atras set /p opc= if %opc% equ 1 goto :conmateria if %opc% equ 2 goto :conmateria if %opc% equ 3 goto :conmateria if %opc% equ 4 goto :conmateria if %opc% equ 5 goto :conmateria if %opc% equ 6 goto :conmateria :conmateria if %opc% equ 1 goto :materiaalta if %opc% equ 2 goto :materiabaja if %opc% equ 3 goto :materiamodi if %opc% equ 4 goto :materialista if %opc% equ 5 goto :materiabusca if %opc% equ 6 goto :menuprincipal pause cls ::-------------------fin de menu materia--------------------------- ::----------------------nuevo materia---------------------- :materiaalta cls echo "Nueva Materia" echo. echo "Nombre de la Materia" set /p materia= echo. echo "Carga Horaria" set /p cargahoraria= echo. echo "ID de La Materia" set /p id= ::----------comprobar si esta duplicada la id----------- for /f "tokens=1,2,3,* delims=;:" %%a in ('type C:\materialista.txt ^|find "%id%"') do ( if %%b==%id% echo La Materia N- %id% Esta Duplicada...! echo Corresponde a %%a:%%b;%%c:%%d echo. pause goto duplimateria ) echo Se guarda Codigo:%id%;Nombre:%materia%;C.Horaria:%cargahoraria% echo Codigo:%id%;Nombre:%materia%;C.Horaria:%cargahoraria%;>>c:\materialista.txt pause cls :duplimateria echo. echo Desa ingresar otra Materia echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :materiaalta if %opc% equ 2 goto :ABMBLMaterias ::------------------fina de nuevo materia--------------------------- ::----------------------------------------------------------------- ::-------------------dar de baja materia--------------------------- :materiabaja cls echo Dar de baja Materia echo. echo Ingrese Id a borrar set /p id= ::--------------empiza comprobacion si existe la materia------------ for /f "tokens=1,2,3,* delims=;" %%a in ('type C:\materialista.txt ^|find "%id%"') do ( if %%a==%id% ( goto continuamateria ) else goto noexistemateria ) :noexistemateria echo materia con id N %id% no existe pause goto :menumateria ::------------fin comprobacion----------------- :continuamateria ::-------------borra materia-------------- for /f "tokens=1,2,3,* delims=;" %%a in ('type C:\materialista.txt') do ( if %%a==%id% ( echo La Materia N - %id% echo. echo Se elimino Materia %%a;%%b;%%c; echo. ) else echo %%a;%%b;%%c;>>C:\kkk.txt ) Copy /y C:\kkk.txt C:\materialista.txt>nul del /q C:\kkk.txt pause cls ::------------menu materia----------------- :menumateria cls echo Desea dar de baja otra materia echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :conmateria if %opc% equ 2 goto :conmateria cls :conmateria if %opc% equ 1 goto :materiabaja if %opc% equ 2 goto :ABMBLMaterias pause cls ::------------------------fin menu materia------------------------------------------- ::-------------------------------------------------------------------------------------- ::-------------------------modificar materia------------------------------------------------- :materiamodi cls Setlocal EnableDelayedExpansion Echo Digite ID de Materia set /p id= for /f "tokens=1,2,3,4,5,6,* delims=:;" %%a in ('type c:\materialista.txt') do ( if %%b==%id% ( echo el registro %%a:%%b,%%c:%%d,%%e,%%f echo. echo "Nombre de la Materia" set /p materia= echo. echo "Carga Horaria" set /p cargahoraria= echo. echo "ID de La Materia" set /p id= echo Se guarda %%a:!id!;%%c:!materia!;%%e:!cargahoraria!; pause echo %%a:!id!;%%c:!materia!;%%e:!cargahoraria!;>>c:\kkk.txt ) else echo %%a:%%b;%%c:%%d;%%e:%%f;>>c:\kkk.txt ) Copy /y C:\kkk.txt C:\materialista.txt>nul del /q C:\kkk.txt cls echo Desea modificar otra Materia echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :conmateria12 if %opc% equ 2 goto :conmateria12 cls goto :error :conmateria12 if %opc% equ 1 goto :materiamodi if %opc% equ 2 goto :ABMBLMaterias pause cls ::-------------------------fin de modificar docente------------------------------------------- ::----------------------LISTAR MAterias---------------------------------------------------- :materialista cls for /f "tokens=1,2,3,4,5,6,* delims=;:" %%a in (C:\materialista.txt) do ( echo %%a:%%b;%%c:%%d;%%e:%%f; ) pause goto :ABMBLMaterias ::--------------------------------fin de listar materia------------------------------------------- ::------------------------------busca materia------------------------------------------------- :materiabusca cls echo Ingrese ID que desa buscar echo. echo "ID" set /p id= echo. for /f "tokens=1,2,3,4,5,6* delims=;:" %%a in ('type C:\materialista.txt ^|find "%id%"') do ( if %%b==%id% ( goto buscamateria1 ) else goto noexistemateria1 ) :noexistemateria1 echo Materia con id N %id% no existe pause goto buscamateria2 :buscamateria1 for /f "tokens=1,2,3,4,5,6* delims=;:" %%a in ('type C:\materialista.txt ^|find "%id%"') do ( if %%b==%id% echo %%a:%%b;%%c:%%d;%%e:%%f; ) pause :buscamateria2 echo. echo Desa buscar otra Materia echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :materiabusca if %opc% equ 2 goto :ABMBLMaterias ::--------------------------------------------------------------------------------------------- ::-------------------------nuevo curso------------------------------------------ :ABMBLCurso cls echo Menu Curso echo. echo "1" - Alta echo "2" - Baja echo "3" - Modificacion echo "4" - Listado echo "5" - Busqueda echo "6" - Atras set /p opc= if %opc% equ 1 goto concurso if %opc% equ 2 goto concurso if %opc% equ 3 goto concurso if %opc% equ 4 goto concurso if %opc% equ 5 goto concurso if %opc% equ 6 goto concurso :concurso if %opc% equ 1 goto cursoalta if %opc% equ 2 goto cursobaja if %opc% equ 3 goto cursomodi if %opc% equ 4 goto cursolista if %opc% equ 5 goto cursobusca if %opc% equ 6 goto menuprincipal pause cls ::-------------------fin de menu curso--------------------------- ::----------------------nuevo curso---------------------- :cursoalta cls echo "Nuevo Curso" echo. echo "Nombre del Curso" set /p ncurso= echo. echo "Codigo del Curso" set /p codigocur= echo. echo "anio" set /p anio= echo. echo "Fecha de Inicio" set /p finicio= echo. echo "Fecha de finalizacion" set /p ffinalizacion= ::----------comprobar si esta duplicada la codigocur----------- for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\cursolista.txt ^|find "%codigocur%%anio%"') do ( if %%f==%codigocur%%anio% echo El Curso N - %codigocur% Esta Duplicado en al anio %anio% ...! echo Corresponde a %%a;%%b;%%c;%%d;%%e echo. pause goto duplicurso ) echo Se guardo %ncurso%;%codigocur%;%anio%;%finicio%;%ffinalizacion%;%codigocur%%anio%; echo %ncurso%;%codigocur%;%anio%;%finicio%;%ffinalizacion%;%codigocur%%anio%;>>c:\cursolista.txt pause cls :duplicurso echo Desa ingresar otro Curso echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :cursoalta if %opc% equ 2 goto :ABMBLCurso ::------------------fina de nuevo curso--------------------------- ::----------------------------------------------------------------- ::-------------------dar de baja curso--------------------------- :cursobaja cls echo Dar de baja Curso echo. echo "Codigo del Curso" set /p codigocur= echo. echo "anio" set /p anio= ::--------------empiza comprobacion si existe el curso------------ for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\cursolista.txt ^|find "%codigocur%%anio%"') do ( if %%f==%codigocur%%anio% ( goto continuacurso ) else goto noexistecurso ) :noexistecurso echo Curso con Codigo N %codigocur% no existe dentro del anio %anio% pause goto :menucurso ::------------fin comprobacion----------------- :continuacurso ::-------------borra curso-------------- for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\cursolista.txt') do ( if %%f==%codigocur%%anio% ( echo El Curso - %codigocur% echo. echo Se elimino Curso %%a;%%b;%%c;%%d;%%e;%%f; echo. ) else echo %%a;%%b;%%c;%%d;%%e;%%f;>>C:\kkk.txt ) Copy /y C:\kkk.txt C:\cursolista.txt>nul del /q C:\kkk.txt pause cls ::------------menu curso----------------- :menucurso cls echo Desea dar de baja otro curso echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :concurso1 if %opc% equ 2 goto :concurso1 cls :concurso1 if %opc% equ 1 goto :cursobaja if %opc% equ 2 goto :ABMBLCurso pause cls ::------------------------fin menu curso------------------------------------------- ::-------------------------------------------------------------------------------------- ::-------------------------modificar curso------------------------------------------------- :cursomodi cls Setlocal EnableDelayedExpansion echo Editar curso echo. echo "Codigo del Curso" set /p codigocur= echo "anio" set /p anio= ::-----------------------comprobar existencia-------------------------------- for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\cursolista.txt ^|find "%codigocur%%anio%"') do ( if %%f==%codigocur%%anio% ( goto continuacursomodifica ) else goto noexistecursomod ) :noexistecursomod echo Curso con Codigo N %codigocur% no existe dentro del anio %anio% pause goto :menucursomodi :continuacursomodifica ::---------------------------------------- for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\cursolista.txt') do ( if %%f==%codigocur%%anio% ( echo El Curso %%a,%%b,%%c,%%d,%%e,%%f, echo. echo "Nombre del Curso" set /p ncurso= echo. echo "anio" set /p anio= echo. echo "Fecha de Inicio" set /p finicio= echo "Fecha de finalizacion" set /p ffinalizacion= echo "Codigo del Curso" set /p codigocur= echo !ncurso!;!codigocur!;!anio!;!finicio!;!ffinalizacion!;!codigocur!!anio!;>>c:\kkk.txt ) else echo %%a;%%b;%%c;%%d;%%e;%%f;>>c:\kkk.txt ) Copy /y C:\kkk.txt C:\cursolista.txt>nul del /q C:\kkk.txt :menucursomodi cls echo Desea modificar otro curso echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :concurso2 if %opc% equ 2 goto :concurso2 cls goto :error :concurso2 if %opc% equ 1 goto :cursomodi if %opc% equ 2 goto :ABMBLCurso pause cls ::-------------------------fin de modificar curso------------------------------------------- ::--------------------------inicio de listado---------------------------------------------- :cursolista cls for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\cursolista.txt') do ( echo Curso:%%a; Codigo:%%b; Anio:%%c; F.I:%%d; F.F:%%e; ) pause goto :ABMBLCurso ::------------------------------fin de listado---------------------------------------------- ::--------------------------------inicio de busqueda-------------------------------------- :cursobusca cls echo Ingrese codigo de curso echo. echo "Codigo del Curso" set /p codigocur= echo. echo "anio" set /p anio= ::-------------------------comprobar codigo--------------------------------- for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\cursolista.txt ^|find "%codigocur%%anio%"') do ( if %%f==%codigocur%%anio% ( goto continuacursomodifica1 ) else goto noexistecursobus ) :noexistecursobus echo Curso con Codigo N %codigocur% no existe dentro del anio %anio% pause goto menucursomodi2 :continuacursomodifica1 for /f "tokens=1,2,3,4,5,6,* delims=;" %%a in ('type C:\cursolista.txt') do ( if %%f==%codigocur%%anio% echo Curso:%%a; Codigo:%%b; Anio:%%c; F.I:%%d; F.F:%%e; ) pause :menucursomodi2 cls echo Desa buscar otro curso echo. echo "1" Si echo "2" Atras set /p opc= if %opc% equ 1 goto :cursobusca if %opc% equ 2 goto :ABMBLCurso ::----------------------------
- Compartir respuesta
1 respuesta más de otro experto
Eh podido llegar a algo como esto
Ejemplo de búsqueda "986523"
@echo off
Echo "Cedula"
set /p cedula=
for /f %%a in ('type C:\alumnoslista.txt ^|findstr "%cedula%"') do (
%%a=="%cedula%"
echo esta duplicado)
El problema es que me da el siguiente error:
"986523"no se reconoce como comando interno o externo, programa o archivo por lotes ejecutables
- Compartir respuesta