Básicamente el truco está es como guardar los datos, normalmente se usa un separador de datos como
; (línea 6)
Rem Datos de Cliente
Rem Guardar datos del Cliente
Echo %id%;
%nombre% >> clientes.txt
Rem Buscar Cliente por id
For /F "tokens=1,2 delims=;"
%%a In ('FindStr /B
%id% clientes.txt'
) Do ( )
Luego la búsqueda de datos se hace por un campo Identificador, no más eficiente sería usar FindStr (línea 10), pero si el ejercicio lo pide también se puede implementar un Bucle que recorra línea a línea. Claro que se tiene que usar Tokens para preparar la línea obtenida (línea 10) en el ejemplo se busca por ID y de la línea hallada se tomas los Tokens 1 y 2 donde el separador de Tokens es el Deliminator
;, a cada Token le corresponde un consecutivo de la variable utilizada, en mi ejemplo usé
%%a así que ese es el Token 1 y el 2 sería
%%b (líneas 11 y 12)
Ya solo resta hacer algo muy similar para tus Servicios, y si se requiere validación de datos existentes de igual manera te sirve FindStr o un Bucle línea a línea