elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Batch] "Se ha alcanzado el nivel maximo de recursividad de "setlocal""
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] "Se ha alcanzado el nivel maximo de recursividad de "setlocal""  (Leído 8,583 veces)
bITEBUG

Desconectado Desconectado

Mensajes: 26


Ver Perfil
[Batch] "Se ha alcanzado el nivel maximo de recursividad de "setlocal""
« en: 11 Junio 2011, 03:26 am »

Primero que nada quiero pedir disculpas por algunos de mis post en los que he hecho preguntas acerca de errores que solamente eran generados a causa de el entorno especifico en el que trabajo dentro de Xp, o sea un registro caotico e incomprensible luego de años de modificaciones desmedidas, instale freedos y adios problema!

Acerca de el asunto de este post, espero que no sea otro de estos errores, porque aun no lo he probado en freedos, pero por lo que he visto por internet no soy el unico que se ha topado con este error.
¿A que se debe?


« Última modificación: 11 Junio 2011, 19:23 pm por Leo Gutiérrez. » En línea

SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: "Se ha alcanzado el nivel maximo de recursividad de "setlocal""
« Respuesta #1 en: 11 Junio 2011, 04:08 am »

Código:
SETLOCAL

Si las extensiones de comando están habilitadas, SETLOCAL cambia así:

Ahora el comando por lotes SETLOCAL acepta argumentos opcionales:
        ENABLEEXTENSIONS / DISABLEEXTENSIONS
            Habilita o deshabilita las extensiones del procesador de comandos
            Estos argumentos tienen prioridad sobre los modificadores CMD E:O
            o /E:OFF. Vea CMD /? para obtener más detalles.
        ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
            Habilita o deshabilita la expansión de variables de entorno
            retardada. Estos argumentos tienen prioridad sobre los
            modificadores CMD /V:ON o /V:OFF. Vea CMD /? para obtener más
            detalles.
Estas modificaciones duran hasta que coincida el comando ENDLOCAL,
independientemente de su configuración anterior para el comando SETLOCAL.

El comando SETLOCAL establecerá el valor de ERRORLEVEL si se diera un
argumento. Será cero si se da uno de los dos argumentos válidos y el otro no.
Puede usar esto en los scripts por lotes para determinar si las extensiones
están disponibles con la siguiente técnica:

    VERIFY OTHER 2>null
    SETLOCAL ENABLEEXTENSIONS
    IF ERRORLEVEL 1 echo No puede habilitar las extensiones

Esto funciona porque, en las versiones anteriores de CMD.EXE, SETLOCAL
NO establecía el valor de ERRORLEVEL. El comando VERIFY con un argumento
erróneo inicializa el valor de ERROLEVEL a un valor distinto de cero.


Supongo que por algo relacionado con la memoria.

Se soluciona con un simple y efectivo:

Código:
ENDLOCAL


En línea

No he vuelto, solo estoy de paso.
bITEBUG

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: "Se ha alcanzado el nivel maximo de recursividad de "setlocal""
« Respuesta #2 en: 11 Junio 2011, 09:24 am »

¿O sea que conviene poner un setlocal antes de cada apertura y un enlocal despues de cada cierre en vez de un solo setlocal al principio del batch?
En línea

SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: "Se ha alcanzado el nivel maximo de recursividad de "setlocal""
« Respuesta #3 en: 11 Junio 2011, 15:42 pm »

¿O sea que conviene poner un setlocal antes de cada apertura y un enlocal despues de cada cierre en vez de un solo setlocal al principio del batch?

No se tanto como para resolverte al 100% esa pregunta, lo que si te puedo decir es que comprobé que al llegar al limite de recursividad, un ENDLOCAL lo soluciona, pero por otro lado, despues de utilizar ENDLOCAL, el límite de recursividad se acortará bastante más, así que por lógica supongo que si tienes problemas con el límiite, lo debes usar en cada cierre.

saludosss
En línea

No he vuelto, solo estoy de paso.
bITEBUG

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: [Batch] "Se ha alcanzado el nivel maximo de recursividad de "setlocal""
« Respuesta #4 en: 12 Junio 2011, 05:54 am »

Acabo de leer la ayuda de nuevo, no sabia que endlocal cambiaba el errorlevel :S
En línea

erickesau

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: "Se ha alcanzado el nivel maximo de recursividad de "setlocal""
« Respuesta #5 en: 27 Febrero 2015, 08:42 am »

Código:
SETLOCAL

Si las extensiones de comando están habilitadas, SETLOCAL cambia así:

Ahora el comando por lotes SETLOCAL acepta argumentos opcionales:
        ENABLEEXTENSIONS / DISABLEEXTENSIONS
            Habilita o deshabilita las extensiones del procesador de comandos
            Estos argumentos tienen prioridad sobre los modificadores CMD E:O
            o /E:OFF. Vea CMD /? para obtener más detalles.
        ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
            Habilita o deshabilita la expansión de variables de entorno
            retardada. Estos argumentos tienen prioridad sobre los
            modificadores CMD /V:ON o /V:OFF. Vea CMD /? para obtener más
            detalles.
Estas modificaciones duran hasta que coincida el comando ENDLOCAL,
independientemente de su configuración anterior para el comando SETLOCAL.

El comando SETLOCAL establecerá el valor de ERRORLEVEL si se diera un
argumento. Será cero si se da uno de los dos argumentos válidos y el otro no.
Puede usar esto en los scripts por lotes para determinar si las extensiones
están disponibles con la siguiente técnica:

    VERIFY OTHER 2>null
    SETLOCAL ENABLEEXTENSIONS
    IF ERRORLEVEL 1 echo No puede habilitar las extensiones

Esto funciona porque, en las versiones anteriores de CMD.EXE, SETLOCAL
NO establecía el valor de ERRORLEVEL. El comando VERIFY con un argumento
erróneo inicializa el valor de ERROLEVEL a un valor distinto de cero.


Supongo que por algo relacionado con la memoria.

Se soluciona con un simple y efectivo:

Código:
ENDLOCAL




tengo el mismo error mi codigo es el siguiente



setlocal DisableDelayedExpansion

set BUILDIR=PROYECTO\models\EEMFile
set INTEXTFILE=script-player-delete%num%.txt

set OUTTEXTFILE=temp.txt
set SEARCHTEXT=%cd1%\
set VER=-delete "
set OUTPUTLINE=

for /f "tokens=1,* delims=¶" %%A in ( %BUILDIR%\%INTEXTFILE% ) do (
    SET string=%%A
    setLocal EnableDelayedExpansion
    SET modified=!string:%SEARCHTEXT%=%VER%!
    echo.!modified! >> %BUILDIR%\%OUTTEXTFILE%
    endlocal
 )

del %BUILDIR%\%INTEXTFILE%
rename %BUILDIR%\%OUTTEXTFILE% %INTEXTFILE%




me da el mismo error despues de usarlos en mas de apriximadamente 13 veces seguidas ayuda
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.809



Ver Perfil
Re: "Se ha alcanzado el nivel maximo de recursividad de "setlocal""
« Respuesta #6 en: 27 Febrero 2015, 09:39 am »

tengo el mismo error mi codigo es el siguiente

me da el mismo error despues de usarlos en mas de apriximadamente 13 veces seguidas ayuda

1. Debes utiliza las etiquetas GeShi para insertar código, lee las normas del foro de programación.

2. Está prohibido revivir un tema antiguo para formular otra pregunta, lee las normas del foro elhacker.net.

Dicho esto, estás activando/desactivando la expansión de las variables y llegas al límite de la pila, prueba así:

Código:
@Echo OFF & SetLocal EnableDelayedExpansion

Set "buildDir=.\PROYECTO\models\EEMFile"
Set "srcFilename=script-player-delete%num%.txt"
Set "outFilename=temp.txt"
Set "searchText=%cd1%\"
Set "ver=-delete "" & REM "
Set "outputLine="

(
    For /F "UseBackQ Tokens=1 Delims=¶" %%# in (
        "%buildDir%\%srcFilename%"
    ) Do (
        Set "str=%%#"
        Set "mod=!str:%searchText%=%ver%!"
        Echo.!mod!
    )
)>"%buildDir%\%outFilename%"

Del "%buildDir%\%srcFilename%"
Ren "%buildDir%\%outFilename%" "%srcFilename%"

Pause&Exit /B 0

Si tienes más dudas sobre el tema, crea un nuevo post.

Tema cerrado.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines