Efectivamente. Se me pasó controlar que el número de cifras no fuera mayor que 5. Además aunque lo probé antes de copiarlo, está claro que debía funcionarme por no haber refrescado el "entorno de pruebas", porque ahora me ocurre exactamente lo que dices. Bueno ya lo he corregido. Pero si quieres trabajar sobre un archivo de nombre fijo este sería el BAT:
@echo off
Setlocal EnableDelayedExpansion
set archivo=xxxxx.xxx
:pedir
set /p Sust=N£meros a sustituir:
if not "%Sust:~5%" == "" (echo Excesivo n£mero de cifras. Deben ser 5&goto :pedir)
for /l %%a in (0,1,4) do (
set cifra=!Sust:~%%a,1!
if !cifra! GTR 9 (echo Cifra incorrecta&goto :pedir)
if !cifra! LSS 0 (echo Cifra incorrecta&goto :pedir)
if "!cifra!" == "" (echo Insuficiente n£mero de cifras. Deben ser 5&goto :pedir)
)
for /f "tokens=*" %%x in ('type "%archivo%"') do (
set Datos=%%x
echo !Datos:~0,-5!!Sust!>"%archivo%"
)
En la tercera línea sustituye el xxxxx. Xxx por el nombre del archivo con la extensión (y el path si fuera necesario) sin comillas.
Dime si ya va bien.