Estoy intentando construir un archivo por lotes genérico que pueda detectar errores con un número de línea, donde se produce el error.
Pero escribir cada número de línea en el código es un poco molesto.¿Cómo obtener el número de línea actual?
¿Es posible obtener el número de línea actual, mientras se está ejecutando un archivo por lotes?
¿Para que el siguiente código pueda funcionar?
@echo off
call :doSomething 1
if %errorlevel% GTR 0 (
REM Do something magic, to retrieve the lineNo
call :getCurrentLineNo currentLineNo
echo Error near %currentLineNo%
)
call :doSomething 2
if %errorlevel% GTR 0 (
call :getCurrentLineNo currentLineNo
echo Error near %currentLineNo%
)
+1, Jeb Hola, me he dado cuenta de este post, muy fresco :-) Probablemente debería cambiar su búsqueda FINDSTR usar '/ n/c: "% ~ 2" '(espacio a ambos lados de ID) con una convención de que los ID nunca contienen espacio. No desea que "abc123" coincida con "zabc1234". La opción/C también evita que algo como "A.1" se interprete como una expresión regular. Además, los ID no deben contener una barra diagonal inversa para evitar problemas de escape con FINDSTR, o bien buscar y reemplazar \ con \\ en el código. – dbenham