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)

Respuesta
1

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

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

¡Gracias! probare lo que me indicas

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:

  1. ABMBL Alumnos
  2. ABMBL Docentes
  3. ABMBL Materias
  4. ABMBL Curso
  5. 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:

  1. Alta
  2. Baja
  3. Modificación
  4. Listado
  5. 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
::----------------------------

Muy bien. Parece un buen trabajo.

1 respuesta más de otro experto

Respuesta
1

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas